forked from OSchip/llvm-project
Rebuild dependently-sized ext vectors if either the element type or the size
changed under the transform. llvm-svn: 84953
This commit is contained in:
parent
41d00ac45b
commit
24e7cb6f26
|
@ -2331,7 +2331,8 @@ QualType TreeTransform<Derived>::TransformDependentSizedExtVectorType(
|
|||
|
||||
QualType Result = TL.getType();
|
||||
if (getDerived().AlwaysRebuild() ||
|
||||
(ElementType != T->getElementType() && Size.get() != T->getSizeExpr())) {
|
||||
ElementType != T->getElementType() ||
|
||||
Size.get() != T->getSizeExpr()) {
|
||||
Result = getDerived().RebuildDependentSizedExtVectorType(ElementType,
|
||||
move(Size),
|
||||
T->getAttributeLoc());
|
||||
|
|
|
@ -45,3 +45,16 @@ struct make5 {
|
|||
typedef int_ptr __attribute__((ext_vector_type(Length))) type; // expected-error{{invalid vector type}}
|
||||
};
|
||||
|
||||
template<int Length>
|
||||
struct make6 {
|
||||
typedef int __attribute__((ext_vector_type(Length))) type;
|
||||
};
|
||||
|
||||
int test_make6() {
|
||||
make6<4>::type x;
|
||||
x.w = 7;
|
||||
|
||||
make6<2>::type y;
|
||||
y.x = -1;
|
||||
y.w = -1; // expected-error{{vector component access exceeds type}}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue