1*7c3d14c8STreehugger Robot // RUN: %clang_cfi -lm -o %t1 %s 2*7c3d14c8STreehugger Robot // RUN: %t1 c 1 2>&1 | FileCheck --check-prefix=CFI %s 3*7c3d14c8STreehugger Robot // RUN: %t1 s 2 2>&1 | FileCheck --check-prefix=CFI %s 4*7c3d14c8STreehugger Robot 5*7c3d14c8STreehugger Robot // This test uses jump tables containing PC-relative references to external 6*7c3d14c8STreehugger Robot // symbols, which the Mach-O object writer does not currently support. 7*7c3d14c8STreehugger Robot // XFAIL: darwin 8*7c3d14c8STreehugger Robot 9*7c3d14c8STreehugger Robot #include <stdlib.h> 10*7c3d14c8STreehugger Robot #include <stdio.h> 11*7c3d14c8STreehugger Robot #include <math.h> 12*7c3d14c8STreehugger Robot main(int argc,char ** argv)13*7c3d14c8STreehugger Robotint main(int argc, char **argv) { 14*7c3d14c8STreehugger Robot // CFI: 1 15*7c3d14c8STreehugger Robot fprintf(stderr, "1\n"); 16*7c3d14c8STreehugger Robot 17*7c3d14c8STreehugger Robot double (*fn)(double); 18*7c3d14c8STreehugger Robot if (argv[1][0] == 's') 19*7c3d14c8STreehugger Robot fn = sin; 20*7c3d14c8STreehugger Robot else 21*7c3d14c8STreehugger Robot fn = cos; 22*7c3d14c8STreehugger Robot 23*7c3d14c8STreehugger Robot fn(atof(argv[2])); 24*7c3d14c8STreehugger Robot 25*7c3d14c8STreehugger Robot // CFI: 2 26*7c3d14c8STreehugger Robot fprintf(stderr, "2\n"); 27*7c3d14c8STreehugger Robot } 28