Welcome to Week 10! This week, we hit a major milestone: FPM now fully builds to LLVM using LFortran with few workarounds and some lines commented! While this is a huge achievement, the recent StructType refactor introduced some regressions in building FPM. So I need to spent some more time to find those and fix that.
Work done this week:
-
Found and fixed all ASR to LLVM bugs:
- Edge cases involving polymorphic arguments and classType handling now correctly resolve in LLVM generation.
- Type-bound procedures are handled more properly at ASR and LLVM backend
- Many MREs and fixes include classType assignments and arguments compatibility
- Creating and fixing MREs for regression caused by StructType Refactor merged this week.
-
Example Workarounds:
-
Key MREs created:
- Issue #8106: Handle Initialization of string array in structConstructor.
- Issue #8108: Handle nested subroutine len variable in character constructor in stringFormat.
- Issue #8112: Handle elemental class procedures.
-
Recent Fixes / Pull Requests:
- PR #8121: Do correct type checking on classType assignment and polymorphic arg pass.
- PR #8133: Handle elemental class procedure.
- PR #8123: handle array and allocatable structType arg passed in generic procedure.
I spent about 22 hours this week debugging and fixing FPM compilation. While the current state enables complete compilation, but due to StructType Refactor there are some minor issues which needs to be fixed.
Thanks again to Ondřej Čertík and Pranav Goswami for guiding and reviewing PRs. Thanks to all LFortran members for their support and help in intense debugging and fixes.
Plan for next week:
- Resolve remaining regressions due to StructType refactor.
- Add regression MREs to integration tests at CI via fixing it.
- Completely build FPM with very less workarounds.