I'd say that due to the input (JS), they also have a fairly limited set of IR constructs they really need to support. The B3 IR looks very simple for this reason. IOW, they figured out that for realistic code they don't need the full, heavy weight of LLVM and can just implement some simple basics.
There is already an LLVM backend in WebKit. I think the whole intention of the Bare Bones Backend is that it isn't LLVM. I can't find the link now, but I believe there are some design documents behind this where they critique the performance and output of LLVM, so they're trying something new.
LLVM does seem to struggle to support dynamic languages like JS well. For example Unladen Swallow (Python) and Rubinius (Ruby) were both commercially-backed efforts to use LLVM and neither achieved much performance.
> LLVM does seem to struggle to support dynamic languages like JS well. For example Unladen Swallow (Python) and Rubinius (Ruby) were both commercially-backed efforts to use LLVM and neither achieved much performance.
FTL has had no problems with performance of LLVM generated code as far as I'm aware: the problem has been the performance of the compilation itself, and as I understand it, that is the motivating factor here.
ADD: Looking at the other comments, this is useful also as a platform to create languages, sort of a universal IL, yes?