Commit Graph

112 Commits (a76589a552b694b3888cd8853e7d2d469f51ac43)

Author SHA1 Message Date
Xavier Leroy 62d65b8e2b Fin du portage pour Linux ELF.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@378 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-31 10:47:35 +00:00
Xavier Leroy f349d56122 Support pour Linux avec binaires ELF.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@377 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-31 09:27:04 +00:00
Xavier Leroy 9bfaeb0ed5 spill: ne pas compter les pseudo-registres deja alloues en pile.
split: ne pas renommer les pseudo-registres deja alloues


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@365 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-29 14:37:01 +00:00
Xavier Leroy 4f97e08558 cmmgen: damned, j'avais oublie une conversion de constante.
emit_sparc: typo.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@364 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-26 16:40:23 +00:00
Xavier Leroy a29f056eb7 cmmgen: faire attention aux debordements quand on convertit un entier
en sa representation 2n+1.
cmm, printcmm, emit*: ajout de Cintlit au type Cmm.data_item.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@360 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-26 16:23:25 +00:00
Xavier Leroy ccdeba9750 emit_i386: bugs dans l'utilisation de testl et dans l'optimisation de
Iload(byte)
autres: introduction du flag Proc.rotate_registers, histoire de tasser
  les registres sur l'Intel.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@358 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-25 14:54:47 +00:00
Xavier Leroy 2672272905 Modifs mineures de generation de code.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@357 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-25 13:21:30 +00:00
Xavier Leroy a66c3bed8d asmlink: ajout de std_exit au link.
proc_*: appel de fonctions C avec beaucoup d'arguments.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@345 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-23 16:55:01 +00:00
Xavier Leroy ef00b1aa1f Modif. de emit_string_literal parce que certains assembleurs (GAS 1.92
sous FreeBSD) lisent "\0033" comme un caractere de code 033 au lieu de
deux caracteres.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@334 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-16 16:19:36 +00:00
Xavier Leroy 7693edce30 Ajout d'un FINIT avant d'appeler une fonction C, de maniere a liberer
tous les registres flottants. Anciennement, on gardait jusqu'a 4
registres occupes, ce qui provoquait un plantage si la fonction C
appelee utilise plus de 4 registres flottants.
Du coup, on passe a 6 le nombre de registres flottants disponibles.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@331 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-15 18:55:43 +00:00
Xavier Leroy eda2f6449b Nouveau format de .cmo (utilisation de MD5, detection unsafe)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@326 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-09 13:37:11 +00:00
Xavier Leroy 65315f212c Verif de coherence des interfaces: permettre de linker plusieurs .cmo
avec le meme nom.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@320 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-04 20:52:43 +00:00
Xavier Leroy 986156eadf "with" -> "with type".
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@308 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-10-03 14:02:18 +00:00
Xavier Leroy ed5c3bffb8 On fait rentrer le cas Cstorechunk / Istore(chunk, ...) dans le cas
general des operations. De la sorte, la description du processeur peut
imposer des registres particuliers pour les arguments. C'est le cas du 386.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@286 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-09-25 14:40:58 +00:00
Xavier Leroy 3063276f8b closure: correction du bug de (fun x -> x) 1
cmmgen: rectification de make_stores pour le cas ou lememe nom est
defini plusieurs fois.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@276 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-09-19 13:32:17 +00:00
Xavier Leroy 09fb8169aa proc_sparc: ne pas appeler ranlib si solaris.
selection: traiter Istore multi-mot (utilise pour les let rec de valeurs).


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@271 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-09-14 11:52:12 +00:00
Xavier Leroy 264fa25adf Rectification du tag des tableaux de flottants.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@267 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-09-13 12:27:41 +00:00
Xavier Leroy a289240e96 Les decalages immediats ne sont selectionnes que si le decalage est
raisonnable.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@262 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-09-11 15:15:03 +00:00
Xavier Leroy bf26cf7612 Backtrack sur les branchements absolus. Produire du code PIC pour IRIX
est plus complique que ca (passer l'adresse de la fonction appelee
dans $25?)


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@237 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-30 15:36:59 +00:00
Xavier Leroy f31b8eda9f Debugging du code pour eviter les branchements absolus.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@235 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-30 14:16:45 +00:00
Xavier Leroy 9ae0f88869 Pour IRIX, generation de code sans branchements absolus.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@233 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-30 13:12:36 +00:00
Xavier Leroy 5f4c093fb3 Ajout du spill retarde dans les if...then...else.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@227 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-28 11:22:55 +00:00
Xavier Leroy e065657873 Erreur de syntaxe.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@220 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-25 10:00:30 +00:00
Xavier Leroy 4dc464a8f3 Les arguments de Lreturn ne sont pas critiques
(enfin, moins que l'adresse de retour...)


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@219 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-25 09:01:22 +00:00
Xavier Leroy a019da159a Introduction de Lreloadretaddr.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@217 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-25 08:46:03 +00:00
Xavier Leroy c9483f27bf Mise au point du portage Sparc avec scheduling.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@215 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-24 15:12:05 +00:00
Xavier Leroy 441a8baaae selection: simplification du cas Istore.
scheduling: nettoyages mineurs.
emit_*: inutile de masquer l'adresse de retour quand on fait un tailcall.
emit_sparc: remplissage manuel des delay slots
proc_alpha, proc_mips, proc_i386: suppression du scheduling.
proc_alpha: ne pas utiliser le registre $23.
proc_sparc: desactivation du scheduler externe


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@208 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-24 13:21:58 +00:00
Xavier Leroy 0b9972d50f Ajout du scheduler (a tester serieusement)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@202 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-13 09:31:50 +00:00
Xavier Leroy 937fece4e3 Introduction de Lcondbranch3.
coloring: plus de variete dans le choix d'un registre.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@201 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-12 14:26:23 +00:00
Xavier Leroy e4066357b1 Ajout des notices de copyright
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@195 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-09 15:06:35 +00:00
Xavier Leroy e2b3ef318d Portage Solaris. On prevoit plusieurs systemes pour une architecture.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@181 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-08-08 12:17:31 +00:00
Xavier Leroy d2ac820e41 emit_alpha: on gratte un cycle sur le Lswitch a 3 cas.
emit_sparc: bug dans le transfert reg flottant -> regs entiers non alignes.
emit_i386: faire pop apres l'appel d'une fonction C retournant un flottant;
        optimisation cmpl $0 -> testl
proc_i386: plus de contraintes sur div et mod.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@175 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-30 14:26:43 +00:00
Xavier Leroy 5e31133ad0 Alignement des flottants mis dans la pile.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@173 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-28 14:17:50 +00:00
Xavier Leroy 1e081aeae3 MAJ tags pour que Infix_tag soit impair.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@171 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-28 13:59:46 +00:00
Xavier Leroy ea3c75ad03 cmmgen: rectification acces generique aux tableaux de flottants.
emit_alpha: modifs mineures sur $gp.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@162 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-28 12:19:50 +00:00
Xavier Leroy ff10bd838d cmmgen: beaucoup plus d'unboxing de flottants.
emit_alpha: recharger ldgp apres un appel direct de fonction C.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@150 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-27 17:38:53 +00:00
Xavier Leroy 4878271adf Suppression de Cmodify / Imodify.
Strength reduction sur les multiplications, divisions, modulo de
puissances de 2.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@147 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-25 13:04:41 +00:00
Xavier Leroy 9a9e2b16c8 cmmgen: MAJ sur la representation des primitives.
proc: ajout du flag word_addressed.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@142 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-25 11:37:38 +00:00
Xavier Leroy 428f9d2303 emit_i386: MAJ et tests.
emit_alpha: utiliser subq pour les comparaisons + branchements.
linearize: suprression moves vides, discard_dead_code ds Lraise.
selection: try...with en tail position.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@135 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-24 12:44:17 +00:00
Xavier Leroy 6ee1e295c0 MAJ portage Sparc
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@131 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-20 08:30:16 +00:00
Xavier Leroy 15cad20a82 asmgen: changement signification option -S.
proc_sparc: appel du scheduler en place.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@127 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-20 07:51:11 +00:00
Xavier Leroy 9ea1269891 linearize: MAJ commentaires.
emit_mips: utilisation de lwc1 / stc1


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@124 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-19 09:56:51 +00:00
Xavier Leroy 2ee785a0c7 MAJ portage Sparc.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@122 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-18 17:40:23 +00:00
Xavier Leroy 94883083ab MAJ portage Sparc (a tester).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@121 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-18 13:09:02 +00:00
Xavier Leroy fafb9d5084 Production des exceptions predefinies par le linker natif.
Masquage du bit "frame scanned" sur l'adresse de retour quand on fait
un tailcall.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@114 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-18 08:40:44 +00:00
Xavier Leroy b826ff65bc Ajout des tests Ieventest et Ioddtest dans Mach.operation
Meilleure traduction lambda -> C-- pour les definitions de structures
toplevel.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@109 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-17 16:10:15 +00:00
Xavier Leroy d0c03529e9 closure: suppression du parametre d'environnement si inutile.
cmmgen: prise en compte du flag -compact.
coloring: dissymetrisation des preferences.
interf: ne pas ajouter de preferences entre registres qui conflictent.
emit_mips: masquage du bit "deja scanne" sur les addresses de retour.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@105 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-13 17:16:20 +00:00
Xavier Leroy 7bb1e28d35 Correction de l'appel a call_gc.
Utilisation de j au lieu de jal pour lever une exception. (pixie-friendly?)


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@103 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-13 12:51:46 +00:00
Xavier Leroy 774ee4e145 cmmgen: compilation des decalages a droite.
selection: merge des resultats des branches d'un switch.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@99 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-13 09:00:54 +00:00
Xavier Leroy 882355e58b emit_alpha, asmlink: generation d'une directive .file.
closure: mecanique de partage des cas de switch revue.
cmmgen: on evite d'emettre plusieurs fois la meme fonction (peut se
produire suite a un departage de orpat).


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@95 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-12 15:32:09 +00:00
Xavier Leroy 06dd9ab2de emit_alpha: Idiv, Imod ont besoin de $gp.
interf: diminuer le poids des preferences dans les branches des
conditionnelles.
selection: mettre contains_calls a true s'il y a un trywith
(necessaire pour le Mips).
spill: backtrack sur le spilling retarde, qui ne marche pas du tout.
(Il retarde le spilling jusqu'apres un point de destruction!)


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@88 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-12 14:25:41 +00:00
Xavier Leroy eb0dbcb903 Ajout de asmlibrarian, MAJ de asmlink.
clambda, closure: meilleure detection des fonctions closes.
selection: correction de storechunk.
spill: spill retarde dans les conditionnelles.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@79 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-11 18:03:29 +00:00
Xavier Leroy 650284680e cmmgen: correction de Pnegfloat; modifs mineures dans l'adressage des tableaux.
proc_alpha: MAJ commentaires.
selection: les ops flottantes ne sont plus considerees comme "cheap",
pour leur laisser plus de temps pour se terminer.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@73 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-11 08:51:10 +00:00
Xavier Leroy c226d5efeb Branchement du GC de la version bytecode sur le compilateur natif
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@72 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-10 09:48:27 +00:00
Xavier Leroy bbbf6d0164 Ajout construction "checkbounds" dans C--.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@71 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-07 16:42:05 +00:00
Xavier Leroy 5c09b581c8 On rend $gp callee-save et on fait ldgp seulement si necessaire
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@70 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-07 16:14:06 +00:00
Xavier Leroy 88c9b7656e Ne rien reloader dans les arguments des appels de fonction.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@68 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-07 12:11:24 +00:00
Xavier Leroy 679ed6c0b3 Passage au truc d'Appel pour les fermetures de fonctions mutuellement
recursives.
Changement du layout de try ... with ...
Correction de bugs dans la generation des descripteurs de frames.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@64 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-07 12:07:07 +00:00
Xavier Leroy 48514aaca8 Integration du generateur de code et du compilateur.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@51 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-07-02 16:41:48 +00:00
Xavier Leroy 41bd2b6153 Fermetures representees en un seul bloc
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@49 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-06-22 10:11:18 +00:00
Xavier Leroy ba79d4bd1f Iloop est maintenant une boucle infinie, on en sort par catch...exit.
Ca supprime Ilooptest, Ialwaystrue, Ialwaysfalse.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@36 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-06-15 16:08:53 +00:00
Xavier Leroy 3ceaa85c72 Premiere version.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@34 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
1995-06-15 08:17:29 +00:00