Incorrect mangling of intrinsics

Long story short, when I do "getDeclaration" for llvm.ctlz, I get "llvm.ctlz.i32.i1" instead of "llvm.ctlz.i32", and the module verifier flags this as an error.

When bitcode is read from a file, the auto-remangler takes care of this, but when the intrinsic is created programmatically, it has an incorrect mangling. Should we also do the remangling in Intrinsic::getDeclaration?

Here's a standalone example that shows the problem:

Intrinsic::getDeclaration takes a list of types used for overloading, not the parameter list of the function.