On Mar 26, 2013, at 9:46 AM, Reid Kleckner <[email protected]> wrote: > On Mon, Mar 25, 2013 at 6:59 PM, John McCall <[email protected]> wrote: > On Mar 25, 2013, at 6:25 PM, Reid Kleckner <[email protected]> wrote: > > The only vector types a user can pass from MSVC code to clang code are > > the ones from *mmintrin.h, so we only have to match the MSVC mangling > > for these types. MSVC mangles the __m128 family of types as tag types, > > which we match. For other vector types, we emit a unique tag type > > mangling that won't match anything produced by MSVC. > > > > http://llvm-reviews.chandlerc.com/D576 > > > > Files: > > lib/AST/MicrosoftMangle.cpp > > test/CodeGenCXX/mangle-ms-vector-types.cpp > > > > Index: lib/AST/MicrosoftMangle.cpp > > =================================================================== > > --- lib/AST/MicrosoftMangle.cpp > > +++ lib/AST/MicrosoftMangle.cpp > > @@ -1519,12 +1519,45 @@ > > > > void MicrosoftCXXNameMangler::mangleType(const VectorType *T, > > SourceRange Range) { > > - DiagnosticsEngine &Diags = Context.getDiags(); > > - unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error, > > - "cannot mangle this vector type yet"); > > - Diags.Report(Range.getBegin(), DiagID) > > - << Range; > > + if (!T->getElementType()->isBuiltinType()) { > > You do a getAs<BuiltinType>() right below this; just do that and check for > null. > > OK. > > > + DiagnosticsEngine &Diags = Context.getDiags(); > > + unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error, > > + "cannot mangle vectors of non-builtin types"); > > + Diags.Report(Range.getBegin(), DiagID) > > + << Range; > > + } > > You're not testing this diagnostic. I can tell because you've forgotten to > early-exit, > so you'll actually crash if you're not given a BuiltinType. :) > > You'll need to put the diagnostic in a separate file that's expected to fail, > but > you should be able to put multiple such tests in such a file. > > Otherwise this looks fine. > > It seems I can't actually test this case because we don't have any vector > attributes that work on complex types. We already issue a diagnostic for > that earlier. I'll make this check an assert.
Hmm, you're right. I thought we supported vectors of _Complex, but that does not seem to be the case. Which is good, because I couldn't remember much code that did what was necessary to make that work. :) John.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
