Merge pull request #771 from jbrodman/nomosoa3

Fix exported varying bug & backwards compatibility.
This commit is contained in:
Dmitry Babokin
2014-03-24 18:19:48 +03:00
2 changed files with 15 additions and 2 deletions

View File

@@ -1204,8 +1204,13 @@ lEmitStructDecl(const StructType *st, std::vector<const StructType *> *emittedSt
for (int i = 0; i < st->GetElementCount(); ++i) { for (int i = 0; i < st->GetElementCount(); ++i) {
const Type *type = st->GetElementType(i)->GetAsNonConstType(); const Type *type = st->GetElementType(i)->GetAsNonConstType();
std::string d = type->GetCDeclaration(st->GetElementName(i)); std::string d = type->GetCDeclaration(st->GetElementName(i));
if (type->IsVaryingType()) {
fprintf(file, " %s[%d];\n", d.c_str(), g->target->getVectorWidth());
}
else {
fprintf(file, " %s;\n", d.c_str()); fprintf(file, " %s;\n", d.c_str());
} }
}
fprintf(file, "};\n"); fprintf(file, "};\n");
fprintf(file, "#endif\n\n"); fprintf(file, "#endif\n\n");
} }

View File

@@ -1909,8 +1909,16 @@ StructType::StructType(const std::string &n, const llvm::SmallVector<const Type
const std::string const std::string
StructType::GetCStructName() const { StructType::GetCStructName() const {
// only return mangled name for varying structs for backwards
// compatibility...
if (variability == Variability::Varying) {
return lMangleStructName(name, variability); return lMangleStructName(name, variability);
} }
else {
return GetStructName();
}
}
Variability Variability
StructType::GetVariability() const { StructType::GetVariability() const {