Skip to content
Snippets Groups Projects
Commit 82b8927f authored by rarbore2's avatar rarbore2
Browse files

LLVM parameter / return attributes

parent d3281948
No related branches found
No related tags found
1 merge request!82LLVM parameter / return attributes
......@@ -64,12 +64,21 @@ struct LLVMBlock {
impl<'a> CPUContext<'a> {
fn codegen_function<W: Write>(&self, w: &mut W) -> Result<(), Error> {
// Dump the function signature.
write!(
w,
"define {} @{}(",
self.get_type(self.function.return_type),
self.function.name
)?;
if self.types[self.function.return_type.idx()].is_primitive() {
write!(
w,
"define dso_local {} @{}(",
self.get_type(self.function.return_type),
self.function.name
)?;
} else {
write!(
w,
"define dso_local nonnull noundef {} @{}(",
self.get_type(self.function.return_type),
self.function.name
)?;
}
let mut first_param = true;
// The first set of parameters are dynamic constants.
for idx in 0..self.function.num_dynamic_constants {
......@@ -87,7 +96,16 @@ impl<'a> CPUContext<'a> {
} else {
write!(w, ", ")?;
}
write!(w, "{} %p{}", self.get_type(*ty), idx)?;
if self.types[ty.idx()].is_primitive() {
write!(w, "{} %p{}", self.get_type(*ty), idx)?;
} else {
write!(
w,
"{} noalias nofree nonnull noundef %p{}",
self.get_type(*ty),
idx
)?;
}
}
write!(w, ") {{\n")?;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment