IR: add optional type to 'byval' function parameters
When we switch to opaque pointer types we will need some way to describe how many bytes a 'byval' parameter should occupy on the stack. This adds a (for now) optional extra type parameter. If present, the type must match the pointee type of the argument. Note to front-end maintainers: if this causes test failures, it's probably because the "byval" attribute is printed after attributes without any parameter after this change. llvm-svn: 362012
This commit is contained in:
@@ -747,7 +747,7 @@ void ModuleBitcodeWriter::writeAttributeGroupTable() {
|
||||
Record.push_back(1);
|
||||
Record.push_back(getAttrKindEncoding(Attr.getKindAsEnum()));
|
||||
Record.push_back(Attr.getValueAsInt());
|
||||
} else {
|
||||
} else if (Attr.isStringAttribute()) {
|
||||
StringRef Kind = Attr.getKindAsString();
|
||||
StringRef Val = Attr.getValueAsString();
|
||||
|
||||
@@ -758,6 +758,13 @@ void ModuleBitcodeWriter::writeAttributeGroupTable() {
|
||||
Record.append(Val.begin(), Val.end());
|
||||
Record.push_back(0);
|
||||
}
|
||||
} else {
|
||||
assert(Attr.isTypeAttribute());
|
||||
Type *Ty = Attr.getValueAsType();
|
||||
Record.push_back(Ty ? 6 : 5);
|
||||
Record.push_back(getAttrKindEncoding(Attr.getKindAsEnum()));
|
||||
if (Ty)
|
||||
Record.push_back(VE.getTypeID(Attr.getValueAsType()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4126,15 +4133,15 @@ void ModuleBitcodeWriter::write() {
|
||||
// Emit blockinfo, which defines the standard abbreviations etc.
|
||||
writeBlockInfo();
|
||||
|
||||
// Emit information describing all of the types in the module.
|
||||
writeTypeTable();
|
||||
|
||||
// Emit information about attribute groups.
|
||||
writeAttributeGroupTable();
|
||||
|
||||
// Emit information about parameter attributes.
|
||||
writeAttributeTable();
|
||||
|
||||
// Emit information describing all of the types in the module.
|
||||
writeTypeTable();
|
||||
|
||||
writeComdats();
|
||||
|
||||
// Emit top-level description of module, including target triple, inline asm,
|
||||
|
||||
Reference in New Issue
Block a user