Basicblock and MachineBasicBlock

Dear LLVM,

I was wondering what's the difference between BasicBlock and
MachineBasicBlock in LLVM. If I want to solve a data flow equation
problem, which one should I use?


BasicBlock contains LLVM code, whereas MachineBasicBlock contains target
specific machine instructions (currently only used by the Sparc backend).
If you want to do machine independant stuff, you use BasicBlock, and make
it a part of opt. If you want to do Target specific stuff you use
MachineBasicBlock and your pass becomes part of llc.

What are you trying to do? LLVM currently only has one data flow pass,
which really should use SSA properties instead... are you sure you cannot
use SSA instead of dataflow to get the information you need?