<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/108821>108821</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Clang Libtooling] Unexpected Word Splitting
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          bajinsheng
      </td>
    </tr>
</table>

<pre>
    I wrote a code based on libtooling to add a simple printf in each IF statement as follows:
```cpp
bool VisitIfStmt(IfStmt *If) {
    FullSourceLoc FullLocation = Context->getFullLoc(If->getBeginLoc());
    if (FullLocation.isValid()) {
      if (Stmt *Then = If->getThen()) {
 SourceLocation StartLoc = Then->getBeginLoc();
        SourceLocation EndLoc = Then->getEndLoc().getLocWithOffset(1);
        IfCounter++;
 std::string NewIfStmt = "";
        // Check if the body is a compound statement
        if (isa<CompoundStmt>(Then)) {
 NewIfStmt += "  printf(\"Executing code block " + std::to_string(IfCounter) + "[\\n\](file://n/)");\n";
 NewIfStmt += TheRewriter.getRewrittenText(SourceRange(StartLoc, EndLoc));
 } else {
          NewIfStmt += "{\n";
          NewIfStmt += "  printf(\"Executing code block " + std::to_string(IfCounter) + "[\\n\](file://n/)");\n";
          NewIfStmt += TheRewriter.getRewrittenText(SourceRange(StartLoc, EndLoc));
 NewIfStmt += "\n}";
        }
        NewIfStmt += "\n}";
 TheRewriter.ReplaceText(SourceRange(StartLoc, EndLoc), NewIfStmt);
 }
    }
    return true;
  }
```


However, for this target code:
```cpp
int main (){
    int a = 1;
    if (a == 1)
        if (a > 0) 
            return true;
}
```
It will be changed into 
![image](https://github.com/user-attachments/assets/c7960f77-f3e6-4d71-bbb6-feec45a2ffbb)


The `return` is incorrectly split.

Full test case, please see here: [test.txt](https://github.com/user-attachments/files/17012840/test.txt)


LLVM version: 36adf8ecedb64047021265a1e1730773d3b3a9e8

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVk-P4rgT_TTmUgIlTsifA4cmNPoh9W9Xmu6dOa4cp5J4xtjIrjQ9337lhKaBZUa7qz0sinBiV5VfvXqpWHivOoO4Yss1W25mYqDeulUtvirjezTdrLbN99UOjs4SggBpG4RaeGzAGtCqJmu1Mh2QBdE0IMCr_UEjHJwy1IIygEL2sNuCJ0G4R0MgPLRWa3v0LHlg0YZFDyyLpkseDtNMba2Gz8or2rXPtCfGi-kGGH_YtYyXwPL1ZAsAsB20fraDk_hk5fj0ZKUgZQ2wZAOVNYRvNGfJY4d0Wh5jnqbW2CkzzTFehiu5iK5aYLy4jLpQ_rPQqjnbX8N5d3lH_NLjBOS8YZi553xOYgL_TMJRSCk4B5_7eJOrveE2yqNp7sSYZqcIiw7DNl8U9b-2rcdAeHwv8q6t7GAIHePrcJ3XPTWhnsmDJxck8Qse3yuWbIBxHq7baIxvGd9C1aP8FiijHiFoDpQf5bY_2ME0H-K59p44Vl6wpKpOtqNYkkfGi4nhG3ovUAXwIzA4yTUwsawY549vKAcKSUyC11Z-Gw0ZX3_kSfb3KdVRR2dWytEqJBteqootKzMOG8aLVmkMzmPWZhzKkZmR52B5ydGfsL70-AmPThG6UK_pntC84Fuo11T0T8J0OEpvUg7jFbxX-lrYLN8Aao-30g2_ezwFs1uMP3X4rxL7Y9D_MsN3WQxo8s3dtyHfXE_8Vf9L2J_woIXEv4O4-tjoViAfeK4eHNLgDJAb8CKLs8m5n58eL_7_Z4_4GspZQWsdUK88kHAd0qiJn3wSlCHYC2Xg1PMuRRvWxNho4juNe1yZFnl5r4UEg0eIRo3dSOR-rj_KdEdwVFpDjSD7QHoToNlTVMZjtlyrvehwkm1PdPBn3XaK-qFeSLtnfDt4dHNBJGQfGp9nfCu8x_FG5mUWtXk-bxPM5mmTx_O6rrN5iyjTpeBtW9fnTC__X3oElkVTRiyLQptVRlrnUJL-Dv6gFS0uPcI3Dwg9gRQeQ9UOGoVH8IjQowsFA7ZcB5MFvdE_ySu8vGGM8yjmRRoxvj2Hu5fF09Pn_8MrOq-sCdsnmWjaAiU2dZZGaR7xmGdLEWOcJ1GeJ01SJ6LEYvKeNaukKZNSzHAV5zxLi7LgyaxfNVkil0nEU6yLKMpz3saYZkkkclE0ad3O1IpHPI3KOIt5EsXlQpZ1kSIvRdkuozqrWRrhXii90Pp1v7CumynvB1zFUVHweKZFjdqPhy3OpRahwfFw7nKr4DCvh86zNNLKk_8IQYr0eEKrggc8nQ9dbLmB3wy-HVASNvDFugaeQwFDg50NTq9-UoYQ_jTMD85-RUmMb0e4YykmxK8r_kcAAAD__8ew530">