121ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner// RUN: %clang %s -O0 -emit-llvm -S -o - | FileCheck %s
2c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattner
321ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner// This should call rb_define_global_function, not rb_f_chop.
4c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattnervoid rb_define_global_function (const char*,void(*)(),int);
5c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattnerstatic void rb_f_chop();
6c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattnervoid Init_String() {
7c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattner  rb_define_global_function("chop", rb_f_chop, 0);
8c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattner}
9c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattnerstatic void rb_f_chop() {
10c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattner}
11c581e6eb7fe65ec845a10e1fee8e734d058e4edeChris Lattner
1221ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner// CHECK: call{{.*}}rb_define_global_function
1321ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner
1421ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner// PR10335
1521ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattnertypedef   void (* JSErrorCallback)(void);
1621ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattnervoid js_GetErrorMessage(void);
1721ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattnervoid JS_ReportErrorNumber(JSErrorCallback errorCallback, ...);
1821ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattnervoid Interpret() {
1921ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner  JS_ReportErrorNumber(js_GetErrorMessage, 0);
2021ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner
2121ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner  // CHECK: call void ({{.*}}, ...)* @JS_ReportErrorNumber({{.*}}@js_GetErrorMessage
2221ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner}
2321ca1fdb25c2bb98721e569aacd10e8b684dd51aChris Lattner
246af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner
256af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner
266af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner
276af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner// PR10337
286af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattnerstruct sigaction { int (*_sa_handler)(int); };
296af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattnertypedef int SigHandler ();
306af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattnertypedef struct sigaction sighandler_cxt;
316af13f3a3538d6c075a6282a7f393c26ee1563c7Chris LattnerSigHandler *rl_set_sighandler(ohandler)
326af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattnersighandler_cxt *ohandler;  {
336af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner  return 0;
346af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner}
356af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner
366af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattnervoid rl_set_signals() {
376af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner  SigHandler *oh;
386af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner  oh = rl_set_sighandler(0);
396af13f3a3538d6c075a6282a7f393c26ee1563c7Chris Lattner}
40