LLM-Based Repair of C++ Implicit Data Loss Compiler Warnings: An Industrial Case Study
Chansong You, Hyun Deok Choi, Jingun Hong
TL;DR
The paper addresses implicit data loss warnings in large-scale C++ projects and presents an LLM-driven automated program repair pipeline that leverages LSP for context, Tree-sitter for code extraction, and a self-consistency mechanism to decide when range checks are needed. It demonstrates the approach on a real-world SAP HANA component, achieving high patch acceptance (102 of 110, about 92.7%) and reducing the overhead of fixes compared to a baseline, while approaching human-designed solutions. The work highlights practical viability for integrating automated warnings repair into development workflows and discusses current limitations, such as handling high-level design changes and macro-expanded code. Overall, the study suggests that LLM-based repair can meaningfully reduce manual effort in maintaining performance-sensitive C++ code while preserving correctness and efficiency.
Abstract
This paper presents a method to automatically fix implicit data loss warnings in large C++ projects using Large Language Models (LLMs). Our approach uses the Language Server Protocol (LSP) to gather context, Tree-sitter to extract relevant code, and LLMs to make decisions and generate fixes. The method evaluates the necessity of range checks concerning performance implications and generates appropriate fixes. We tested this method in a large C++ project, resulting in a 92.73% acceptance rate of the fixes by human developers during the code review. Our LLM-generated fixes reduced the number of warning fix changes that introduced additional instructions due to range checks and exception handling by 39.09% compared to a baseline fix strategy. This result was 13.56% behind the optimal solutions created by human developers. These findings demonstrate that our LLM-based approach can reduce the manual effort to address compiler warnings while maintaining code quality and performance in a real-world scenario. Our automated approach shows promise for integration into existing development workflows, potentially improving code maintenance practices in complex C++ software projects.
