figured it out. casting M_PI to a float solved the problem. this must have something to do with the fact that CGContextAddArc takes CGFloat arguments, and CGFloat is defined differently on 32 bit versus 64 bit platforms. on 32 bit, it's a float, on 64 bit it's a double.
CGContextAddArc(context, 100., 100., 10., -(float)M_PI, (float)M_PI, YES);