Playing with gcc's intermediate GIMPLE format

前端 未结 3 1532
无人共我
无人共我 2021-02-07 23:41

According to this article gcc uses several intermediate formats before generating code. I read that the GIMPLE format uses three address code, which seems to be the easiest inte

相关标签:
3条回答
  • 2021-02-08 00:10

    I tried the flag -fdump-tree-gimple. It works only for the C/C++ language, and not for other languages such as Java, Ada, Fortran, and Objective-C)

    0 讨论(0)
  • 2021-02-08 00:14

    You can easily generate GIMPLE representation of any file using the flag -fdump-tree-gimple.

    If you want to write a plugin, then you might be interested in how passes work on GCC. You can see the output of each pass with flags of the form:

    -fdump-<ir>-<passname>
    

    where ir could be:

    • tree : Intraprocedural passes on GIMPLE
    • ipa : Interprocedural passes on GIMPLE
    • rtl : Intraprocedural passes on RTL

    Use <passname> = all to see all the dumps, e.g. -fdump-ipa-all.

    0 讨论(0)
  • 2021-02-08 00:25

    You might find it easier to write a plugin for GCC, which would allow you to hook the GIMPLE generation and alter it inside GCC, which should drop the downtime of saving, editing then trying to compile from GIMPLE form. MELT is one such plugin (though it offers way more than just altering the lower level representations). There is also a nice PDF here on GIMPLE altering plugins.

    Else, you can look here for information on how GCC's GIMPLE works. In terms of dumping GIMPLE out:

    You can request to dump a C-like representation of the GIMPLE form with the flag -fdump-tree-gimple.

    0 讨论(0)
提交回复
热议问题