software-portability-and-optimization.hashnode.devProject - Stage 3: into the Clone PruningIntroduction Building on my progress from Stages I and II, this final phase of my SPO600 project focused on enhancing the GCC compiler pass to handle multiple sets of cloned functions. This stage required significant debugging and troubleshooting as ...Apr 18, 2025·5 min read
software-portability-and-optimization.hashnode.devProject - Stage 3: ImplementationEnhanced Clone Detection My implementation in tree-cloneprune.cc now uses more sophisticated methods to identify and analyze multiple sets of cloned functions. Key improvements include: Using regex pattern matching to identify function variants with...Apr 17, 2025·3 min read
software-portability-and-optimization.hashnode.devProject - Stage 3 : InitialisedThroughout this semester, We've been working on an enhancement to the GCC Compiler(reference). We want to aim for implementing Automatic Function Multi-Versioning (AFMV) cloning. Essentially, AFMV cloning allows a compiler to automatically generate o...Apr 14, 2025·1 min read
software-portability-and-optimization.hashnode.devSubstantially the same: Project Stage 2To wrap up for Stage 2 of my SPO600 project, I implemented a GCC compiler pass that analyzes function clones and determines if they should be pruned. This pass identifies when multiple versions of a function are substantially similar, allowing for po...Apr 7, 2025·3 min read
software-portability-and-optimization.hashnode.devProject Stage 2From 2 000 lines of red to a clean GCC build 🚦 “Nothing teaches you GCC internals faster than fixing your own pass.” 1 Context Goal: create a GIMPLE‑level pass that prints NOPRUNE: for the first function with a unique structure and PRUNE: for...Apr 7, 2025·2 min read