  We develop a framework for computing two foundational analyses for concurrent
higher-order programs: (control-)flow analysis (CFA) and may-happen-in-parallel
analysis (MHP). We pay special attention to the unique challenges posed by the
unrestricted mixture of first-class continuations and dynamically spawned
threads. To set the stage, we formulate a concrete model of concurrent
higher-order programs: the P(CEK*)S machine. We find that the systematic
abstract interpretation of this machine is capable of computing both flow and
MHP analyses. Yet, a closer examination finds that the precision for MHP is
poor. As a remedy, we adapt a shape analytic technique-singleton abstraction-to
dynamically spawned threads (as opposed to objects in the heap). We then show
that if MHP analysis is not of interest, we can substantially accelerate the
computation of flow analysis alone by collapsing thread interleavings with a
second layer of abstraction.
