Hi, I am trying to run an LLVM analysis on a C++ program that calls qsort(), using the LLVM interpreter (lli --force-interpreter). The code is the qsort_large.c file in the MiBench benchmark suite. If I comment the qsort() call, the execution works fine. If I uncomment the qsort() call, I run into a segmentation fault error as follows: 0 lli 0x0000000000d35c6f 1 lli 0x0000000000d36199 2 libpthread.so.0 0x0000000004e41cb0 3 libpthread.so.0 0x000000000604e4d2 If I run valgrind, the output is the following: vex amd64->IR: unhandled instruction bytes: 0x37 0x1 0x0 0x0 0x0 0x0 0x2 0x0 ==9222== valgrind: Unrecognised instruction at address 0x604e4d2. ==9222== at 0x604E4D2: ??? ==9222== by 0x5CA781B: msort_with_tmp.part.0 (msort.c:106) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA75A0: msort_with_tmp.part.0 (msort.c:46) ==9222== by 0x5CA7ABA: __GI_qsort_r.constprop.1 (msort.c:46) ==9222== by 0x5054E87: ffi_call_unix64 (in /usr/local/lib/libffi.so.6.0.1) ==9222== by 0x505479C: ffi_call (in /usr/local/lib/libffi.so.6.0.1) ==9222== by 0x8604AE: llvm::Interpreter::callExternalFunction(llvm::Function*, std::vector<llvm::GenericValue, std::allocator<llvm::GenericValue> > const&) (in /usr/local/bin/lli) ==9222== by 0x85B49A: llvm::Interpreter::callFunction(llvm::Function*, std::vector<llvm::GenericValue, std::allocator<llvm::GenericValue> > const&) (in /usr/local/bin/lli) ==9222== by 0x85B952: llvm::Interpreter::visitCallSite(llvm::CallSite) (in /usr/local/bin/lli) ==9222== by 0x85D638: ??? (in /usr/local/bin/lli) ==9222== by 0x85BED8: llvm::Interpreter::run() (in /usr/local/bin/lli) ==9222== by 0x85045A: llvm::Interpreter::runFunction(llvm::Function*, std::vector<llvm::GenericValue, std::allocator<llvm::GenericValue> > const&) (in /usr/local/bin/lli) ==9222== by 0xB93781: llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*, std::vector<std::string, std::allocator<std::string> > const&, char const* const*) (in /usr/local/bin/lli) ==9222== by 0x4FE861: main (in /usr/local/bin/lli) This seems to suggest that the problem is the call to the comparator function within qsort(). I have the following system configuration: - Ubuntu 12.04 - LLVM v.3.2 - Clang v.3.2 - LibFFI v.3.0.12 - Libc v.2.15 Do you happen to know if this behavior is normal? Does LLVM 3.2 have support for function pointers? Thank you in advance. Simon -- View this message in context: http://llvm.1065342.n5.nabble.com/LLVM-Interpreter-Qsort-tp55277.html Sent from the LLVM - Dev mailing list archive at Nabble.com.