Displaying 4 results from an estimated 4 matches for "mcp_yield".
2007 Jan 06
3
[LLVMdev] More detailed example...
...taking the (constant) result 0.
I somehow need to get around this, or my attempt to implement a C++
model checker is dead in the water.
Thank you in advance,
Sarah
PS: mcp_fork() duplicates the current stack as a new thread, and returns
true within that thread and false in the original thread. mcp_yield()
forces a reschedule. Stacks are separate, but the heap is shared. My
model checker generates correct output for the generated code, but the
generated code has the wrong semantics.
-----------------------------------------------------------------
Here is the test code:
#include <stdio.h>...
2007 Jan 06
0
[LLVMdev] More detailed example...
...w are you compiling this? I get the following sort of output:
void %inc(int* %p) {
entry:
%tmp = volatile load int* %p ; <int> [#uses=1]
%tmp1 = add int %tmp, 1 ; <int> [#uses=1]
volatile store int %tmp1, int* %p
tail call void (...)* %mcp_yield( )
%tmp.1 = volatile load int* %p ; <int> [#uses=1]
%tmp1.1 = add int %tmp.1, 1 ; <int> [#uses=1]
volatile store int %tmp1.1, int* %p
tail call void (...)* %mcp_yield( )
%tmp.2 = volatile load int* %p ; <int> [#...
2007 Jan 06
2
[LLVMdev] More detailed example...
...to have to hit a moving target.
> void %inc(int* %p) {
> entry:
> %tmp = volatile load int* %p ; <int> [#uses=1]
> %tmp1 = add int %tmp, 1 ; <int> [#uses=1]
> volatile store int %tmp1, int* %p
> tail call void (...)* %mcp_yield( )
> %tmp.1 = volatile load int* %p ; <int> [#uses=1]
> %tmp1.1 = add int %tmp.1, 1 ; <int> [#uses=1]
> volatile store int %tmp1.1, int* %p
> tail call void (...)* %mcp_yield( )
> %tmp.2 = volatile load int* %p...
2007 Oct 09
2
[LLVMdev] Stack layout in the x86 back-end
...strategies -- this all
works. However, I'm currently dumbly checking the entire stack (not just
the currently relevant stack frame(s)) for changes, but I'd rather just
be able to check a minimal area. Whenever I context switch, the code
under test calls a function in my run-time-system (mcp_yield(), not that
the details matter much). What I'd like to be able to do is pick up the
address range of the stack frame of the function that called it --
ideally, I'd like a block that encompasses everything from the function
parameters up to the current top-of-stack including spilled reg...