Building SSA in a Compiler for PHP
Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript, present a much greater challenge. The information required to build SSA form is not available directly from the program source and cannot be...
        Saved in:
      
    
          | Published in | SSA-based Compiler Design pp. 347 - 357 | 
|---|---|
| Main Authors | , | 
| Format | Book Chapter | 
| Language | English | 
| Published | 
        Cham
          Springer International Publishing
    
        2022
     | 
| Subjects | |
| Online Access | Get full text | 
| ISBN | 303080514X 9783030805142  | 
| DOI | 10.1007/978-3-030-80515-9_24 | 
Cover
| Abstract | Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript, present a much greater challenge.
The information required to build SSA form is not available directly from the program source and cannot be derived from a simple analysis. Instead, we find a litany of features whose presence makes analysis difficult such as runtime generation of source code and variable-variables.
Ruling out the presence of these features requires precise, inter-procedural, whole-program analysis. We discuss the futility of the pessimistic solution, the analyses required to provide a precise SSA form, and how the presence of variables of unknown types affects the precision of SSA.
We identify the features of PHP that make building SSA difficult, outline the solutions we found to some of these challenges, and draw some lessons about the use of SSA in analysis frameworks for PHP. | 
    
|---|---|
| AbstractList | Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript, present a much greater challenge.
The information required to build SSA form is not available directly from the program source and cannot be derived from a simple analysis. Instead, we find a litany of features whose presence makes analysis difficult such as runtime generation of source code and variable-variables.
Ruling out the presence of these features requires precise, inter-procedural, whole-program analysis. We discuss the futility of the pessimistic solution, the analyses required to provide a precise SSA form, and how the presence of variables of unknown types affects the precision of SSA.
We identify the features of PHP that make building SSA difficult, outline the solutions we found to some of these challenges, and draw some lessons about the use of SSA in analysis frameworks for PHP. | 
    
| Author | Biggar, Paul Gregg, David  | 
    
| Author_xml | – sequence: 1 givenname: Paul surname: Biggar fullname: Biggar, Paul email: paul.biggar@gmail.com – sequence: 2 givenname: David surname: Gregg fullname: Gregg, David  | 
    
| BookMark | eNo1j1FLwzAUhSMq6Gb_gQ_B97ib3KRpHmdxThhsMAXfQtomUq3NaPD_m019upzvwOF-M3IxxtETcsvhngPohdEVQwYIrALFFTNWyDNSZIwZnpg5J7P_IN-uSJHSBwCICrFS_JrcPXz3Q9eP73S_X9J-pI7W8evQD36iIU50t97dkMvghuSLvzsnr6vHl3rNNtun53q5YYlzlAxdaBU2QSsFphRCAC9b79uy48FrFVqDjZbauFyL1muQDjrDpQo6ALoS50T87qbDlB_yk21i_EyWgz3a2qxl0WYXezKzR1v8AU9uRdg | 
    
| ContentType | Book Chapter | 
    
| Copyright | The Author(s), under exclusive license to Springer Nature Switzerland AG 2022 | 
    
| Copyright_xml | – notice: The Author(s), under exclusive license to Springer Nature Switzerland AG 2022 | 
    
| DOI | 10.1007/978-3-030-80515-9_24 | 
    
| DatabaseTitleList | |
| DeliveryMethod | fulltext_linktorsrc | 
    
| Discipline | Engineering | 
    
| EISBN | 9783030805159 3030805158  | 
    
| Editor | Rastello, Fabrice Bouchez Tichadou, Florent  | 
    
| Editor_xml | – sequence: 1 givenname: Fabrice surname: Rastello fullname: Rastello, Fabrice email: fabrice.rastello@inria.fr – sequence: 2 givenname: Florent surname: Bouchez Tichadou fullname: Bouchez Tichadou, Florent email: florent.bouchez-tichadou@imag.fr  | 
    
| EndPage | 357 | 
    
| GroupedDBID | 38. AABBV AAZWU ABSVR ABTHU ABVND ACBPT ACHZO ACPMC ADNVS AEJLV AEKFX AHVRR AIYYB ALMA_UNASSIGNED_HOLDINGS BBABE CZZ IEZ SBO TPJZQ Z83  | 
    
| ID | FETCH-LOGICAL-s1134-3afc53bf755096222016ceec6d1fe75fc93b7479a5092ce704a0d9145f7f03a63 | 
    
| ISBN | 303080514X 9783030805142  | 
    
| IngestDate | Tue Jul 29 20:27:16 EDT 2025 | 
    
| IsPeerReviewed | false | 
    
| IsScholarly | false | 
    
| Language | English | 
    
| LinkModel | OpenURL | 
    
| MergedId | FETCHMERGED-LOGICAL-s1134-3afc53bf755096222016ceec6d1fe75fc93b7479a5092ce704a0d9145f7f03a63 | 
    
| PageCount | 11 | 
    
| ParticipantIDs | springer_books_10_1007_978_3_030_80515_9_24 | 
    
| PublicationCentury | 2000 | 
    
| PublicationDate | 2022 | 
    
| PublicationDateYYYYMMDD | 2022-01-01 | 
    
| PublicationDate_xml | – year: 2022 text: 2022  | 
    
| PublicationDecade | 2020 | 
    
| PublicationPlace | Cham | 
    
| PublicationPlace_xml | – name: Cham | 
    
| PublicationTitle | SSA-based Compiler Design | 
    
| PublicationYear | 2022 | 
    
| Publisher | Springer International Publishing | 
    
| Publisher_xml | – name: Springer International Publishing | 
    
| SSID | ssj0002833851 | 
    
| Score | 1.6452904 | 
    
| Snippet | Constructing SSA form for static languages such as C/C++ and Java is a well-understood task. Dynamic scripting languages, such as PHP, Python, and JavaScript,... | 
    
| SourceID | springer | 
    
| SourceType | Publisher | 
    
| StartPage | 347 | 
    
| SubjectTerms | Alias analysis Chi-function Compiler design Dynamic scripting language Dynamic typing Global value numbering (GVN) Hashed-SSA (HSSA) Inter-procedural analysis May alias Must alias PHP Point-to graph Runtime code generation SCCP Static single assignment form (SSA form) Statically typed Symbolic execution Type inference Zero version  | 
    
| Title | Building SSA in a Compiler for PHP | 
    
| URI | http://link.springer.com/10.1007/978-3-030-80515-9_24 | 
    
| hasFullText | 1 | 
    
| inHoldings | 1 | 
    
| isFullTextHit | |
| isPrint | |
| link | http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwnV3JTsMwELVouQAXVrHLQtwqozi24-ZYUFFVAapEi3qLbMdGXIrUlgtfzzhLky6XcomiJJokb7xMXuaNEbqXJhDKWEGkoZpw6iISs8ASmEwEbUeBZswLnF_fot6I98diXC3WkKlL5vrB_G7UlfzHq3AM_OpVslt4dmEUDsA--Be24GHYrgS_yzRrruF47xA_B6VZn4bOPYXBo56O4XnvPH26nv7nRSmfG7PZH4sVsltg2dMgqjLscxEHvUGdIgjDFYqgpAhXSMaK51r6pmS-go2vih7WxjWWl8UspkiW15ReG33rCRdghXgzgsRJyBuoAZabaLfT7b98LEgwiG0YhHxec1PetaiKVD1FTe-4yfLaH-wsMBgeogMvFsFexQEvfYR27OQY7deKPJ6guxJXDLjirwlWuMQVA64YcD1Fo-fu8KlHipUpyIxSxglTzgimnRS-eg6EWBA4Q7RhopQ6K4UzMdPwnRYrOB0aKwOugjSmXDjpAqYidoaak--JPUfY0NQaJ0NtgzbnOtDCcKslS1XaDl2kLlCrfL_Et7VZUhaaBjQSlgAaSYZG4tG43OrqK7RXNZdr1JxPf-wNxFhzfVt46g_OQhun | 
    
| linkProvider | Library Specific Holdings | 
    
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.title=SSA-based+Compiler+Design&rft.au=Biggar%2C+Paul&rft.au=Gregg%2C+David&rft.atitle=Building+SSA+in+a+Compiler+for+PHP&rft.date=2022-01-01&rft.pub=Springer+International+Publishing&rft.isbn=9783030805142&rft.spage=347&rft.epage=357&rft_id=info:doi/10.1007%2F978-3-030-80515-9_24 | 
    
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9783030805142/lc.gif&client=summon&freeimage=true | 
    
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9783030805142/mc.gif&client=summon&freeimage=true | 
    
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9783030805142/sc.gif&client=summon&freeimage=true |