<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - -fvisibility=hidden and -fvisibility-inlines-hidden being ignored"
   href="https://llvm.org/bugs/show_bug.cgi?id=24648">bug 24648</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>richard-llvm@metafoo.co.uk
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>INVALID
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - -fvisibility=hidden and -fvisibility-inlines-hidden being ignored"
   href="https://llvm.org/bugs/show_bug.cgi?id=24648#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - -fvisibility=hidden and -fvisibility-inlines-hidden being ignored"
   href="https://llvm.org/bugs/show_bug.cgi?id=24648">bug 24648</a>
              from <span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span></b>
        <pre>If you want to define a structure for internal-only consumption, you need to
give it internal linkage (wrap it in an anonymous namespace). Otherwise, your
program is ill-formed (no diagnostic required) due to an ODR violation, which
leads to undefined behavior at runtime in this case.

The difference you're seeing here is unrelated to visibility -- that affects
DSO boundaries, and in this case you linked the two object files into the same
binary. The difference is simply that LLVM's inliner chose not to inline the
operator[] function. You'll probably see the same thing with the other
compilers if you turn off optimization (or maybe if you link the object files
in the opposite order).</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>