]> granicus.if.org Git - clang/commit
[AST] Get aliased type info from an aliased TemplateSpecialization.
authorMatt Davis <Matthew.Davis@sony.com>
Mon, 5 Nov 2018 17:25:26 +0000 (17:25 +0000)
committerMatt Davis <Matthew.Davis@sony.com>
Mon, 5 Nov 2018 17:25:26 +0000 (17:25 +0000)
commita8770a7e8e8797a860773c2e0959274b1db4fc7a
treee873160889dcd8083f8cee2f32e8e1da25d5fa1f
parent434bf832418a1c518aa53c512ce26d51a307da48
[AST] Get aliased type info from an aliased TemplateSpecialization.

Summary:
Previously the TemplateSpecialization instance for 'template_alias', in the example below, returned the type info of the  canonical type (int).  This ignored the type alias if the template type happen to be aliased.

Before this patch, the assert would trigger with an  alignment of 4:
```
typedef int __attribute__(( aligned( 16 ) )) aligned_int;
template < typename >
using template_alias = aligned_int;
static_assert( alignof( template_alias<void>) == 16, "" );
```

This patch checks if the TemplateSpecialization type has an alias, and if so will return the type information for the aliased type, else the canonical type's info is returned (original behavior).  I believe that this is the desired behavior.

Reviewers: aaron.ballman, rjmccall

Reviewed By: rjmccall

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D54048

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@346146 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Type.h
test/SemaCXX/alignof.cpp