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

    <tr>
        <th>Summary</th>
        <td>
            Discrepancies with clang::RecursiveASTVisitor between Windows and Unix (mac/linux)
        </td>
    </tr>

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

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

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

<pre>
    Hello All.

I develop [codevis](invent.kde.org/sdk/codevis) that heavily uses llvm and clang for it's introspection.
Today I was debugging a failure in one of the unittests that just happened on windows, in the end I was able to create a minimal example that showcased the error, and tested it on windows and linux, getting different results.

If we have a 
```c++
class LogicalDepVisitor : public clang::RecursiveASTVisitor<LogicalDepVisitor> {
    bool VisitVarDecl(clang::VarDecl *varDecl) {
       std::cout << "Visiting variable " << varDecl->getDeclName().getAsString() << std::endl; 
   }
```

and use it to introspect this code:

```c++
 class C {};

   class D {
     public:
       template <typename T>
       static void some_method(T t, int a = 0)
       {
 C c;
       }
   };

   class E {
     public:
       void some_method()
       {
           D::some_method(1);
       }
 };
```

The result in Linux and MacOS is:
```
<- Analyzing Template
t
a
c
<- Analyzing Template Expansion
t
a
c
```

whereas in windows is

```
<- Analyzing Template
t
a
<- Analyzing Template Expansion
t
a
c
```
I'm attaching a minimal example (cmake based project, minimal files) that shows this discrepancy.

Windows LLVM Version: 18.1.2
Linux: 18.1.8

[logical_visitor.zip](https://github.com/user-attachments/files/16258011/logical_visitor.zip)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVl9vo7gX_TTOy1UjME2BBx6S0Og3Uue30k628zgy5gKeGhvZhjTz6VcGkibdtLsrbYSSyPePj889vhdmragVYkZWG7LKF6x3jTaZ40yxwrCBLQpdHrP_oZQa1lIuSZCTYD19f4ESB5S6A7LacF3iICxZ5YQmQg2o3PKlxKU2NaE7W74Qujv50BRcwxw0yAYhj9BbtCDl0AJTJXDJVA2VNiAcobEFoZzRtkPuhFYzgr0u2RG-wIFZKLHo61qoGhhUTMjeIAgFWiHoClyD0CvhHFpnp31_9tZBw7oOFZagFRyEKvXBErr1gT4CVTlnZ4VEcBq4QeYQGLRCiZZJwFfWdt7mU9pGHzizWE7Rxmjjs_nz-I2xBOEudhoNUqj-1XvV6JyHX4qqQoPKgUHbS2ev6a7ggNCwwYOYDQ_B9HBCN_4ZV7lk1sKTrgVnMsfuWVjhtAESraHrCyn4xDGJ1iRa_468N1YMuP62nz1JtP1LNIkegcTzDgAAhdYSRuMzMzlySWhykXZeBELXw8meXmcAAOvKyZ3r3gGJtiTaAqF0zOspGZgRYwUIpSf7nO-ORI81Ov_3_6xFQhNC02WNbm2_OSNUPa2cos5boSoliTZwBkLi_B2dl7T7SvUWff2cvtAiuEZY8JL2aS8CbhcFpqpsRwrinESbyxiA2Z6_o2iq13mHmTaHbSe9Gkm0dccOFWsR9iR6fEcuc4LDoEUJVrf4o0XX6JLQZA9u0rrzUopyCAhNr2LfUGyBn8GejfkVeR-c5fEfneUGvI_BvH3yqZjXgaGP_BDsFdRbpd43ON883wae_PUcL-pXxn_7BsK-FfpddLS9g7Vi8vjLa3Y_V2cyullG8938NAIeXzumrNDqs9hb0A8NGmS-V55bjLA3VfmvIf-HWL8QGrfAnGO8mfr1-2bqm0jLXhCKsZl2Rv9EPor15FkJiW8jxPddO13FUlhusGOKH6_65veZj6en56_wjGaEHK0hTJbhkk4-Y63Pi8kVcauNnJrhj2FqhctfopvmXONcN6qC7gjd1cI1fbHkuiV011s0d9NJW1TOErqbke_CB7pKgjAkdHcr80n8izKLyjRK2QKzMKZhGCcPwWrRZElUpEmYxvdJkiRBUMVBErP7ikfBA4spXy1ERgN6H8RhHIRhEKyWAa6qktKkQkZ5GgbkPsCWCbn0Q9eP6IWwtscsTelDuJCsQGnHVwJKp5ZOqX87MJn3vyv62pL7QArr7FsGJ5zELD8XQaCFg3DN38waKNAdEBV8v5iMfyjx6qXQMu5JmuZkuuiNzD6h3EOZf-7OwtmNJ_O0T4cbMvpnAAAA__9q-6nE">