[ConstantRange] Improve the efficiency of one of the ConstantRange constructors.
authorCraig Topper <craig.topper@gmail.com>
Sat, 29 Apr 2017 05:08:52 +0000 (05:08 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sat, 29 Apr 2017 05:08:52 +0000 (05:08 +0000)
commitee4f22dc2df40fbc42672a0677ac4d11f245bc48
tree5f5f4b749e997f8bdb8f7d206f0d0281b02d6a1b
parent1f961df10c7f523266a5f66a228aade82110ab11
[ConstantRange] Improve the efficiency of one of the ConstantRange constructors.

We were default constructing the Lower/Upper APInts. Then creating min or max value, then doing a move assignment to Lower and copy assignment to upper. The copy assignment operator in particular has an out of line function call that has to examine whether or not a previous allocation exists that can be reused which of course it can't in this case.

The new code creates the min/max value first, move constructs Lower from it then copy constructs Upper from Lower.

This also seems to have convinced a self host build that this constructor can be inlined more readily into other methods in ConstantRange.

llvm-svn: 301736
llvm/lib/IR/ConstantRange.cpp