As I see it, automatic parallelization is a dead end. There hasn't been a significant breakthrough since I first heard about the idea many, many years ago. The problem is that auto-parallelizers need to be conservative when examining code. Obvious loop iterations that are independent can be run in parallel. Throw in a pointer reference and the whole thing is unknown (without programmer intervention). General parallelism within an application is going to be too far out of reach for a compiler or parser.

Patterns, like loop iterations or your (a * b) + (c * d) example, once they are known, can be found in the algorithm and transformed to a parallel version. The serial code pattern is set by the programmer and is just the order of the instructions. Thus, sticking things on a stack or running instuctions out of order (with the obvious checks for read-write order to variables) is easy to do.

If a compiler, like the Intel compilers, that has an auto-parallelizing feature should have a report feature to denote possible parallelizable code and state the reasons that the code was rejected by the compiler. This gives the programmer the chance to add pragmas or restructure the code to make it more amenable to automatic parallelization. Now that the programmer has needed to step in, it seems less "automatic" than we would hope. However, I think that this is the state-of-the-art.

A related idea is to embed parallelism into the language. For example, map in Lisp or vector and matrix operations in APL or array syntax in Fortran 90. If the a, b, c, and d in the sum of products example are vectors, writing the one line would take the place of a hand-coded loop over the elements and the multiplication and addition operations of vector elements could be recognized as a parallel operation; if there were multiple cores available, those could be set up to run on as many as cores as needed. Still, not exactly automatic parallelization and only applicable to the set of algorithmic patterns that are known to be safe for such a transformation.