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

    <tr>
        <th>Summary</th>
        <td>
            Incorrect `__LINE__` with `-frewrite-includes` and mixed CRLF
        </td>
    </tr>

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

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

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

<pre>
    ## Way to reproduce

Create 1.cpp (CRLF line endings)
```cpp
#include "1.h"
```

Create 1.h (LF line endings)
```cpp
    #if 1
static_assert(__LINE__ == 2, "");
 #endif
```

Try to compile
```
$ clang++ -E -frewrite-includes 1.cpp | clang++ -c -x c++ -
In file included from 1.cpp:1:
./1.h:3:1: error: static assertion failed due to requirement '3 == 2': 
static_assert(__LINE__ == 2, "");
^             ~~~~~~~~~~~~~
1 error generated.
```

## Tested on

```
$ clang++ --version
clang version 15.0.5
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/15/bin
Configuration file: /etc/clang/clang++.cfg
```

## Additional info

Bug **doesn't reproduce** if `-frewrite-includes` is omitted.

Bug **doesn't reproduce** if whitespace in front of `#if 1` is removed.

Bug **doesn't reproduce** if both `1.h` and `1.cpp` have same line endings.

Bug **reproduces** if CRLF/LF is swapped - `1.cpp` has LF and `1.h` has CRLF.

Bug **reproduces** if whitespace in front of `#if 1` is replaced with TAB.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVc9vqzgQ_mucyygIhkKSA4ekLVKlag-rSnuMjD2AV8ZmbdPmXfZvXxnINn37fu5DCIVhZr6Z7xtPuPeqM0QVK06seNjwKfTWVV5bY0cb-DD5TWPlp4phzjCHP_gnCBYcjc7KSRBLH1h6XJ73jnggyBIxjsBwf__7cw1aGQIyUpnOMzys_mW63GIcVwvmygg9SQKGmCU9Q_zM94tQfQT6cRgAgAjVQrYYfOBBiTP3nlxguD-fn59-ezyfgeUPLH8AZHgfK5rvA8tPax6GeURrv1Hji5upEnYYlaYvO-IdCM1Nx_DE8ATbR9i2jt6cCrRd-fBXQnf3H30FbC8grm9LwicDrdIEa6yE1tlhScDyY8bytbaEYR1Jzo_5agdyzrr4Y6EEFkqUNdBypUmCnGiR_q9JORrIBGC4y2-Y2sXwX-KVFY9we_19ey0u2VIpdGTI8UAy-YYG69S-kA8kwZoP376jxfaVnFfXmPkTrCbIiiRNilVn7joKsfXLvjyXd9tRbLUy02XbmWl16R1xCYOVpKPjaL26XBXzgWtN8kHN7DOsJ-8Y1lo18alfh6hVwbBu1FrLvTWt6ibHF3nidC2RFATDeu2ivukmEW33fZqOUqqYkmtQprW3HqepA4ZHhkdpyRuGu3CzBOYPoFpgZfrfAWZlCsqDHVS4ketn0r71KpAfuYiTHWfaBLAz2vUwLxCOBvv6_yAaG_qYMJ6KMgVu5PIWT06ZQs9fCTwf6MOm-QrQv-n9e_64DBnWz3Ws07_xcSQJ288wPDzX79D91RhjfwLqx9kaNRck4U2FHl6Op2Qjq1we8gPfUJWVO8wzLMpi01etKFIp921Gh4YjNi2XTbYri6zcF3fNLtuoClPEDPGQZVmZFkmGB8oOTboXTYn7A2d3KQ1c6SROdGJdt1HeT1QVh11ebjRvSPvrn5CrotO2mTrP7lKtfPDvYUEFTdWTEdY5EiG2dV0usa-5l6-OYeR2UBeSM6ebyemqD2H0cTFi1KdToZ-aRNjh_fDNxYzO_kkiMKznuj3Dei79nwAAAP__TskY0A">