Inconvénients de la forme intermédiaire fonctionnelle

16

J'écris un optimiseur pour un langage similaire à JavaScript, et je dois choisir une représentation de code intermédiaire. De nos jours, le choix évident / typique est Static Single Assignment (SSA).

Cependant, la mise en œuvre du compilateur moderne en C discute également de la forme intermédiaire fonctionnelle, ce qui signifie essentiellement devenir purement fonctionnel pour la représentation intermédiaire (pure uniquement en termes de variables locales, les données de tas sont toujours modifiables, et non CPS, juste des letblocs simples et des appels de queue) et présente certains avantages en termes de facilité de raisonnement.

Vraisemblablement, ce n'est pas une évidence ou tout le monde utiliserait déjà une telle représentation, alors ma question est, quels sont les inconvénients de la forme intermédiaire fonctionnelle par rapport à la SSA?

rwallace
la source
3
Quel type d'analyse allez-vous faire sur cette forme intermédiaire? SSA est idéal pour l'élimination de code mort, la propagation constante, la spécialisation partielle et autres. Si ce genre de choses n'est pas dans votre menu, vous pouvez ignorer SSA et utiliser une représentation plus détendue pour des passes d'analyse plus simples. Mais, générer un formulaire SSA est une tâche assez triviale, et vous pouvez facilement convertir SSA en CPS (et vice versa), ce qui double les avantages.
SK-logic
Oui, je vise le mois complet, à peu près, et le langage d'entrée et le format de sortie (initialement C ++) sont tous deux des langages impératifs.
rwallace
La génération d'un formulaire SSA est une tâche assez triviale, et vous pouvez facilement convertir SSA en CPS, vous pouvez également convertir CPS en SSA, ce qui double les avantages.
Leon Alexis Cardinal

Réponses:

1

SSA est idéal pour l'élimination de code mort, la propagation constante, la spécialisation partielle et autres. Si ce genre de choses n'est pas dans votre menu, vous pouvez ignorer SSA et utiliser une représentation plus détendue pour des passes d'analyse plus simples

Adromil Balais
la source