Support extended vector types in chained PCH.

llvm-svn: 109675
This commit is contained in:
Sebastian Redl 2010-07-28 21:38:49 +00:00
parent 377a8ed913
commit 04f5c31e98
4 changed files with 23 additions and 5 deletions

View File

@ -1685,11 +1685,12 @@ PCHReader::ReadPCHBlock(PerFileData &F) {
}
case pch::EXT_VECTOR_DECLS:
if (!ExtVectorDecls.empty()) {
Error("duplicate EXT_VECTOR_DECLS record in PCH file");
return Failure;
}
ExtVectorDecls.swap(Record);
// Optimization for the first block.
if (ExtVectorDecls.empty())
ExtVectorDecls.swap(Record);
else
ExtVectorDecls.insert(ExtVectorDecls.end(),
Record.begin(), Record.end());
break;
case pch::VTABLE_USES:

View File

@ -0,0 +1,3 @@
// First header file for chain-ext_vector.c PCH test
typedef __attribute__((ext_vector_type(2))) float float2;

View File

@ -0,0 +1,3 @@
// Second header file for chain-ext_vector.c PCH test
typedef __attribute__((ext_vector_type(4))) float float4;

View File

@ -0,0 +1,11 @@
// Test this without pch.
// RUN: %clang_cc1 -include %S/Inputs/chain-ext_vector1.h -include %S/Inputs/chain-ext_vector2.h -fsyntax-only -verify %s
// Test with pch.
// RUN: %clang_cc1 -emit-pch -o %t1 %S/Inputs/chain-ext_vector1.h
// RUN: %clang_cc1 -emit-pch -o %t2 %S/Inputs/chain-ext_vector2.h -include-pch %t1 -chained-pch
// RUN: %clang_cc1 -include-pch %t2 -fsyntax-only -verify %s
int test(float4 f4) {
return f4.xy; // expected-error{{float2}}
}