FYI: AllocaInst & MallocInst ctor change

Just a note: I just checked in a change that corrects some very
non-intuitive behavior of the AllocaInst & MallocInst classes. Before,
the constructor would take a Type which would specify the return type of
the instruction, instead of the operand type. Now it takes the operand
type directly. More concretely:

LLVM Code:
X = alloca int ; int*
Y = malloc int * ; int**

Old C++ code:
X = new AllocaInst(PointerType::get(Type::IntTy));
Y = new MallocInst(PointerType::get(PointerType::get(Type::IntTy)));
assert(X->getType() == PointerType::get(Type::IntTy));

New C++ code:
X = new AllocaInst(Type::IntTy);
Y = new MallocInst(PointerType::get(Type::IntTy));
assert(X->getType() == PointerType::get(Type::IntTy));

The old behavior was quite confusing for some people I talked to, and the
assertion failure message apparently didn't help much. I expect that this
change will meet people's expectations better.

Unfortunately, any code that calls one of these constructors will have to
change. I updated the mainline transformations, but anything not in our
CVS tree will break (including the 426 students projects, when the CSIL
CVS tree is updated).

-Chris

http://llvm.cs.uiuc.edu/
http://www.nondot.org/~sabre/Projects/