1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- { inlining is not compatible with get_caller_frame/get_frame }
- {$inline off}
- {$ifndef cpullvm}
- type
- PointerLocal = procedure(_EBP: Pointer);
- procedure proccall(p: codepointer);
- begin
- {$ifndef FPC_LOCALS_ARE_STACK_REG_RELATIVE}
- PointerLocal(p)(get_caller_frame(get_frame,get_pc_addr));
- {$else}
- PointerLocal(p)(get_frame);
- {$endif}
- end;
- procedure t1;
- var
- l : longint;
- procedure t2;
- procedure t3;
- procedure t4;
- begin
- l := 5;
- end;
- begin { t3 }
- proccall(@t4);
- end;
- begin { t2 }
- t3;
- end;
- begin { t1 }
- l := 0;
- t2;
- if (l <> 5) then
- halt(1);
- end;
- begin
- t1;
- end.
- {$else ndef cpullvm}
- begin
- { this kind of hacks can never work on llvm }
- end.
- {$endif cpullvm}
|