Questions on Parallelism and Data Dependence Analysis

Hi, I have two questions about llvm, and expect your reply very much.

1. Is there any plan of llvm to support Thread-Level Parallelism by using
OpenMP, MPI, pthread or llvm-defined directives?
    If automatic parallelism exploring is very hard, what is the key
problem? We can't get the precise data dependence
    information at compile-time?

AFAIK, OpenMP, MPI, and pthreads should all work just fine with LLVM.
Automatically parallelizing code is a fundamentally difficult problem
for many reasons which I won't go into as it's only tangentially
relevant to LLVM.

2. Can I use the functions provided by llvm to get the real data
dependence(Read After Write) info on basic block level directly?
   In other words, can I get the task graph(node: task viewed as basic block
or more coarse grain, edge: real data dependence)
   from sequential program using llvm to explore task-level parallelism by
some proposed task scheduling algorithm?

I don't think there's anything quite like that. There is
MemoryDependenceAnalysis; that returns the dependencies for an
individual instruction.

-Eli