r292194 - [AST] AttributedType should derive type properties from the EquivalentType

Hans Wennborg via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 31 14:43:12 PST 2017


r293702.

On Tue, Jan 31, 2017 at 11:12 AM, Richard Smith <richardsmith at google.com> wrote:
> Sure, let's take this for Clang 4.
>
> On 31 January 2017 at 10:39, Hans Wennborg <hans at chromium.org> wrote:
>>
>> Ping?
>>
>> On Thu, Jan 26, 2017 at 3:42 PM, Hans Wennborg <hans at chromium.org> wrote:
>> > Should we merge this to the release branch?
>> >
>> > On Mon, Jan 16, 2017 at 8:14 PM, David Majnemer via cfe-commits
>> > <cfe-commits at lists.llvm.org> wrote:
>> >> Author: majnemer
>> >> Date: Mon Jan 16 22:14:25 2017
>> >> New Revision: 292194
>> >>
>> >> URL: http://llvm.org/viewvc/llvm-project?rev=292194&view=rev
>> >> Log:
>> >> [AST] AttributedType should derive type properties from the
>> >> EquivalentType
>> >>
>> >> Using the canonical type instead of the equivalent type can result in
>> >> insufficient template instantiations.
>> >>
>> >> This fixes PR31656.
>> >>
>> >> Differential Revision: https://reviews.llvm.org/D28788
>> >>
>> >> Modified:
>> >>     cfe/trunk/include/clang/AST/Type.h
>> >>     cfe/trunk/test/CodeGenCXX/microsoft-abi-default-cc.cpp
>> >>
>> >> Modified: cfe/trunk/include/clang/AST/Type.h
>> >> URL:
>> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=292194&r1=292193&r2=292194&view=diff
>> >>
>> >> ==============================================================================
>> >> --- cfe/trunk/include/clang/AST/Type.h (original)
>> >> +++ cfe/trunk/include/clang/AST/Type.h Mon Jan 16 22:14:25 2017
>> >> @@ -3832,13 +3832,13 @@ private:
>> >>
>> >>    friend class ASTContext; // creates these
>> >>
>> >> -  AttributedType(QualType canon, Kind attrKind,
>> >> -                 QualType modified, QualType equivalent)
>> >> -    : Type(Attributed, canon, canon->isDependentType(),
>> >> -           canon->isInstantiationDependentType(),
>> >> -           canon->isVariablyModifiedType(),
>> >> -           canon->containsUnexpandedParameterPack()),
>> >> -      ModifiedType(modified), EquivalentType(equivalent) {
>> >> +  AttributedType(QualType canon, Kind attrKind, QualType modified,
>> >> +                 QualType equivalent)
>> >> +      : Type(Attributed, canon, equivalent->isDependentType(),
>> >> +             equivalent->isInstantiationDependentType(),
>> >> +             equivalent->isVariablyModifiedType(),
>> >> +             equivalent->containsUnexpandedParameterPack()),
>> >> +        ModifiedType(modified), EquivalentType(equivalent) {
>> >>      AttributedTypeBits.AttrKind = attrKind;
>> >>    }
>> >>
>> >>
>> >> Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-default-cc.cpp
>> >> URL:
>> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-default-cc.cpp?rev=292194&r1=292193&r2=292194&view=diff
>> >>
>> >> ==============================================================================
>> >> --- cfe/trunk/test/CodeGenCXX/microsoft-abi-default-cc.cpp (original)
>> >> +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-default-cc.cpp Mon Jan 16
>> >> 22:14:25 2017
>> >> @@ -45,3 +45,12 @@ void __cdecl static_baz() {}
>> >>  void static_qux() {}
>> >>  // GCABI-LABEL: define void @_Z10static_quxv
>> >>  // MSABI: define void @"\01?static_qux@@YAXXZ"
>> >> +
>> >> +namespace PR31656 {
>> >> +template <int I>
>> >> +void __cdecl callee(int args[I]);
>> >> +// GCABI-LABEL: declare void @_ZN7PR316566calleeILi1EEEvPi(
>> >> +// MSABI: declare void @"\01??$callee@$00 at PR31656@@YAXQAH at Z"(
>> >> +
>> >> +void caller() { callee<1>(0); }
>> >> +}
>> >>
>> >>
>> >> _______________________________________________
>> >> cfe-commits mailing list
>> >> cfe-commits at lists.llvm.org
>> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>


More information about the cfe-commits mailing list