[LLVMbugs] [Bug 575] NEW: longjmp and siglongjmp are transformed into aborts
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Wed Jun 8 09:42:30 PDT 2005
http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=575
Summary: longjmp and siglongjmp are transformed into aborts
Product: libraries
Version: 1.5
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Transformation Utilities
AssignedTo: unassignedbugs at nondot.org
ReportedBy: jin at cs.rice.edu
Hi,
I had the longjmp and siglongjmp problems when I compiled a set of R library functions
where some of them use setjmp/longjmp and sigsetjmp/siglongjmp. I had abort when
I run the executable generated from llvm. After tranforming the bytecode to a c code
with llc, I have found the longjmps and siglongjmps have been replaced with calls to abort.
Here is a short example:
#include <setjmp.h>
#include <stdio.h>
int bar(jmp_buf env, int i)
{
if (i == 0) longjmp(env, 1);
return i;
}
int foo(jmp_buf env, int i, int j)
{
return bar(env, i) + bar(env, j);
}
main(int argc, char **argv)
{
jmp_buf env;
int i, j, v, s;
if (argc != 3) {
printf("Usage: a.out i j\n");
exit(0);
}
s = setjmp(env);
if (s != 0) {
printf("Error: value of i or j is zero\n");
exit(0);
}
i = atoi(argv[1]);
j = atoi(argv[2]);
v = foo(env, i, j);
printf("Correct: sum = %d\n", v);
}
Compiling this code with gcc would work fine. Thank you very much for your help!
Guohua Jin
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the llvm-bugs
mailing list