WIP fix stack overflow
This commit is contained in:
@@ -264,7 +264,7 @@ impl<'a> Compiler<'a> {
|
||||
|
||||
fn next_label_name(&mut self) -> Cow<'a, str> {
|
||||
self.label_counter += 1;
|
||||
Cow::from(format!("L{}", self.label_counter))
|
||||
Cow::from(format!("__internal_L{}", self.label_counter))
|
||||
}
|
||||
|
||||
fn expression(
|
||||
|
||||
@@ -14,6 +14,10 @@ pub fn find_leaf_functions(instructions: &[InstructionNode]) -> HashSet<String>
|
||||
for node in instructions {
|
||||
match &node.instruction {
|
||||
Instruction::LabelDef(label) => {
|
||||
if label.starts_with("__internal_L") {
|
||||
continue;
|
||||
}
|
||||
|
||||
// If we were tracking a function, and it remained a leaf until now, save it.
|
||||
if let Some(name) = current_label.take()
|
||||
&& is_current_leaf
|
||||
|
||||
@@ -99,7 +99,7 @@ fn optimize_leaf_functions<'a>(
|
||||
// First scan: Identify instructions to remove and capture RA offsets
|
||||
for (i, node) in input.iter().enumerate() {
|
||||
match &node.instruction {
|
||||
Instruction::LabelDef(label) => {
|
||||
Instruction::LabelDef(label) if !label.starts_with("__internal_L") => {
|
||||
current_function = Some(label.to_string());
|
||||
function_start_indices.insert(label.to_string(), i);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user