Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roll back to pre mmap in llvm backend (0.1.103) #4713

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion deps/llvm-backend_release
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.119
0.1.103
8 changes: 4 additions & 4 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
description = "K Framework";
inputs = {
llvm-backend.url = "github:runtimeverification/llvm-backend/v0.1.119";
llvm-backend.url = "github:runtimeverification/llvm-backend/v0.1.103";
haskell-backend = {
url = "github:runtimeverification/haskell-backend/v0.1.104";
inputs.rv-utils.follows = "llvm-backend/rv-utils";
Expand Down
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion llvm-backend/src/main/native/llvm-backend
Submodule llvm-backend updated 158 files
40 changes: 0 additions & 40 deletions pyk/src/pyk/kllvm/hints/prooftrace.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
kore_header,
llvm_rewrite_event,
llvm_function_event,
llvm_function_exit_event,
llvm_hook_event,
llvm_rewrite_trace,
llvm_rule_event,
Expand Down Expand Up @@ -246,43 +245,6 @@ def args(self) -> list[LLVMArgument]:
return [LLVMArgument(arg) for arg in self._function_event.args]


@final
class LLVMFunctionExitEvent(LLVMStepEvent):
"""Represent an LLVM function exit event in a proof trace.

Attributes:
_function_exit_event (llvm_function_exit_event): The underlying LLVM function exit event object.
"""

_function_exit_event: llvm_function_exit_event

def __init__(self, function_exit_event: llvm_function_exit_event) -> None:
"""Initialize a new instance of the LLVMFunctionExitEvent class.

Args:
function_exit_event (llvm_function_exit_event): The LLVM function exit event object.
"""
self._function_exit_event = function_exit_event

def __repr__(self) -> str:
"""Return a string representation of the object.

Returns:
A string representation of the LLVMFunctionExitEvent object using the AST printing method.
"""
return self._function_exit_event.__repr__()

@property
def rule_ordinal(self) -> int:
"""Return the axiom ordinal number associated with the function exit event."""
return self._function_exit_event.rule_ordinal

@property
def is_tail(self) -> bool:
"""Return True if the function exit event is a tail call."""
return self._function_exit_event.is_tail


@final
class LLVMHookEvent(LLVMStepEvent):
"""Represents a hook event in LLVM execution.
Expand Down Expand Up @@ -368,8 +330,6 @@ def step_event(self) -> LLVMStepEvent:
return LLVMSideConditionEventExit(self._argument.step_event)
elif isinstance(self._argument.step_event, llvm_function_event):
return LLVMFunctionEvent(self._argument.step_event)
elif isinstance(self._argument.step_event, llvm_function_exit_event):
return LLVMFunctionExitEvent(self._argument.step_event)
elif isinstance(self._argument.step_event, llvm_hook_event):
return LLVMHookEvent(self._argument.step_event)
elif isinstance(self._argument.step_event, llvm_pattern_matching_failure_event):
Expand Down
80 changes: 25 additions & 55 deletions pyk/src/tests/integration/kllvm/test_prooftrace.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ def test_streaming_parser_iter(self, header: prooftrace.KoreHeader, hints_file:
list_of_events = list(it)

# Test length of the list
assert len(list_of_events) == 17
assert len(list_of_events) == 13

# Test the type of the events
for event in list_of_events:
Expand Down Expand Up @@ -190,7 +190,7 @@ def test_parse_proof_hint_single_rewrite(
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 2 post-initial-configuration events
assert len(pt.trace) == 2
Expand Down Expand Up @@ -260,10 +260,10 @@ def test_parse_proof_hint_reverse_no_ints(
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 9 post-initial-configuration events
assert len(pt.trace) == 12
assert len(pt.trace) == 9

# Contents of the k cell in the initial configuration
kore_pattern = llvm_to_pattern(pt.initial_config.kore_pattern)
Expand Down Expand Up @@ -321,43 +321,25 @@ def test_parse_proof_hint_reverse_no_ints(
assert axiom == axiom_expected
assert len(rule_event.substitution) == 1

# Function exit event (no tail)
function_exit_event = pt.trace[6].step_event
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
assert function_exit_event.rule_ordinal == 158
assert function_exit_event.is_tail == False

# Function event
rule_event = pt.trace[7].step_event
rule_event = pt.trace[6].step_event
assert isinstance(rule_event, prooftrace.LLVMFunctionEvent)
assert rule_event.name == "Lblreverse'LParUndsRParUnds'TREE-REVERSE-SYNTAX'Unds'Tree'Unds'Tree{}"
assert rule_event.relative_position == '1'
# Fun events should not have Kore args unless called with a special flag
assert len(rule_event.args) == 0

# Simplification rule
rule_event = pt.trace[8].step_event
rule_event = pt.trace[7].step_event
assert isinstance(rule_event, prooftrace.LLVMRuleEvent)
axiom = repr(definition.get_axiom_by_ordinal(rule_event.rule_ordinal))
axiom_expected = get_pattern_from_ordinal(definition_text, rule_event.rule_ordinal)
assert axiom == axiom_expected
assert len(rule_event.substitution) == 1

# Function exit event (no tail)
function_exit_event = pt.trace[9].step_event
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
assert function_exit_event.rule_ordinal == 157
assert function_exit_event.is_tail == False

# Function exit event (no tail)
function_exit_event = pt.trace[10].step_event
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
assert function_exit_event.rule_ordinal == 160
assert function_exit_event.is_tail == False

# Then pattern
assert pt.trace[11].is_kore_pattern()
kore_pattern = llvm_to_pattern(pt.trace[11].kore_pattern)
assert pt.trace[8].is_kore_pattern()
kore_pattern = llvm_to_pattern(pt.trace[8].kore_pattern)
k_cell = kore_pattern.patterns[0].dict['args'][0]
assert k_cell['name'] == 'kseq'
assert (
Expand Down Expand Up @@ -403,10 +385,10 @@ def test_parse_proof_hint_non_rec_function(
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 6 post-initial-configuration events
assert len(pt.trace) == 8
assert len(pt.trace) == 6

# Contents of the k cell in the initial configuration
kore_pattern = llvm_to_pattern(pt.initial_config.kore_pattern)
Expand All @@ -433,36 +415,24 @@ def test_parse_proof_hint_non_rec_function(
inner_rule_event = pt.trace[2].step_event
assert isinstance(inner_rule_event, prooftrace.LLVMRuleEvent)

# Function exit event (no tail)
function_exit_event = pt.trace[3].step_event
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
assert function_exit_event.rule_ordinal == 103
assert function_exit_event.is_tail == False

# Functional event
fun_event = pt.trace[4].step_event
fun_event = pt.trace[3].step_event
assert isinstance(fun_event, prooftrace.LLVMFunctionEvent)
assert fun_event.name == "Lblid'LParUndsRParUnds'NON-REC-FUNCTION-SYNTAX'Unds'Foo'Unds'Foo{}"
assert fun_event.relative_position == '0:0:0'
assert len(fun_event.args) == 0

# Then rule
rule_event = pt.trace[5].step_event
rule_event = pt.trace[4].step_event
assert isinstance(rule_event, prooftrace.LLVMRuleEvent)
axiom = repr(definition.get_axiom_by_ordinal(rule_event.rule_ordinal))
axiom_expected = get_pattern_from_ordinal(definition_text, rule_event.rule_ordinal)
assert axiom == axiom_expected
assert len(rule_event.substitution) == 1

# Function exit event (no tail)
function_exit_event = pt.trace[6].step_event
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
assert function_exit_event.rule_ordinal == 103
assert function_exit_event.is_tail == False

# Then pattern
assert pt.trace[7].is_kore_pattern()
kore_pattern = llvm_to_pattern(pt.trace[7].kore_pattern)
assert pt.trace[5].is_kore_pattern()
kore_pattern = llvm_to_pattern(pt.trace[5].kore_pattern)
k_cell = kore_pattern.patterns[0].dict['args'][0]
assert k_cell['name'] == 'kseq'
assert (
Expand Down Expand Up @@ -498,7 +468,7 @@ def test_parse_proof_hint_dv(self, hints: bytes, header: prooftrace.KoreHeader,
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 3 post-initial-configuration events
assert len(pt.trace) == 3
Expand Down Expand Up @@ -579,7 +549,7 @@ def test_parse_concurrent_counters(self, hints: bytes, header: prooftrace.KoreHe
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 37 post-initial-configuration events
assert len(pt.trace) == 37
Expand Down Expand Up @@ -739,7 +709,7 @@ def test_parse_proof_hint_0_decrement(self, hints: bytes, header: prooftrace.Kor
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 1 post-initial-configuration event
assert len(pt.trace) == 1
Expand Down Expand Up @@ -768,7 +738,7 @@ def test_parse_proof_hint_1_decrement(self, hints: bytes, header: prooftrace.Kor
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 2 post-initial-configuration events
assert len(pt.trace) == 2
Expand Down Expand Up @@ -797,7 +767,7 @@ def test_parse_proof_hint_2_decrement(self, hints: bytes, header: prooftrace.Kor
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 3 post-initial-configuration events
assert len(pt.trace) == 3
Expand Down Expand Up @@ -836,14 +806,14 @@ def test_parse_proof_hint_peano(self, hints: bytes, header: prooftrace.KoreHeade
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 776 post-initial-configuration events
assert len(pt.trace) == 916
assert len(pt.trace) == 776

# Assert that we have a pattern matching failure as the 135th event
assert pt.trace[160].is_step_event() and isinstance(
pt.trace[160].step_event, prooftrace.LLVMPatternMatchingFailureEvent
assert pt.trace[135].is_step_event() and isinstance(
pt.trace[135].step_event, prooftrace.LLVMPatternMatchingFailureEvent
)


Expand Down Expand Up @@ -945,7 +915,7 @@ def test_parse_proof_hint_imp5(self, hints: bytes, header: prooftrace.KoreHeader
assert pt is not None

# 14 initialization events
assert len(pt.pre_trace) == 20
assert len(pt.pre_trace) == 14

# 2 post-initial-configuration events
assert len(pt.trace) == 2
Expand Down Expand Up @@ -984,7 +954,7 @@ def test_parse_proof_hint_builtin_hook_events(
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 4 post-initial-configuration events
assert len(pt.trace) == 4
Expand Down
6 changes: 1 addition & 5 deletions pyk/src/tests/integration/test_krun_proof_hints.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,8 @@ class Test0Decrement(KRunTest, ProofTraceTest):
function: Lblproject'Coln'KItem{} (0:0)
rule: 139 1
VarK = kore[Lbl0'Unds'DECREMENT-SYNTAX'Unds'Nat{}()]
function exit: 139 notail
function exit: 100 notail
function: LblinitGeneratedCounterCell{} (1)
rule: 98 0
function exit: 98 notail
function exit: 99 notail
config: kore[Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(Lbl0'Unds'DECREMENT-SYNTAX'Unds'Nat{}(),dotk{}())),Lbl'-LT-'generatedCounter'-GT-'{}(\\dv{SortInt{}}("0")))]
config: kore[Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(Lbl0'Unds'DECREMENT-SYNTAX'Unds'Nat{}(),dotk{}())),Lbl'-LT-'generatedCounter'-GT-'{}(\\dv{SortInt{}}("0")))]
"""
Expand All @@ -72,7 +68,7 @@ def test_parse_proof_hint_0_decrement(self, krun: KRun, header: prooftrace.KoreH
assert pt is not None

# 10 initialization events
assert len(pt.pre_trace) == 14
assert len(pt.pre_trace) == 10

# 1 post-initial-configuration event
assert len(pt.trace) == 1
Expand Down
Loading