> If so, wouldn't you need a sample data file (map, demo, whatever)
> that covers 100% of branches and dependencies in order to know
> for absolutely sure that there are no dependencies between code.
I am curious about that too.
Even 100% statement coverage does not guarantee that you have
discovered all dependencies. Think “array of pointers”. You may
have good enough coverage to execute once the statement that gets a
pointer from the array, but it does not mean that different values
do not result in other pointers that create dependencies where you
haven't seen any.
I think this is why they call it “semiautomatic”. The tool hints
at what looks parallelizable. The user takes responsibility for the
changes.
> Could you make a huge SSA of the program and determine
> dependencies that way
The difficulty with just C is not so much multiple assignments to
the same memory locations, but everything else, including the
pervasive reliance on pointers. C++ adds several abstractions
on top of that that do not make it easier to statically tell what
the program may do.
There are whole-program static analyzers whose results can be
used to resolve pointers and get useful dependencies on
medium-sized C programs. I work on one:
http://frama-c.com/try_out.html