This is a follow up patch to http://reviews.llvm.org/D4904.
This gives CSE/GVN more options to eliminate duplicate expressions. However, this implementation is significantly less rigid and adds support for other operations such as integer add/sub/urem/srem/sdiv/etc. I need to rerun the performance numbers, but I thought I would begin the review process in the meantime.
Please have a look,
Chad
Rather than this, it would be nice to write in a way that there is only one test of the constant type: