InstCombine: Improve the result bitvect type when folding (cmp pred (load (gep GV...
authorArnaud A. de Grandmaison <arnaud.adegm@gmail.com>
Fri, 22 Mar 2013 08:25:01 +0000 (08:25 +0000)
committerArnaud A. de Grandmaison <arnaud.adegm@gmail.com>
Fri, 22 Mar 2013 08:25:01 +0000 (08:25 +0000)
commit2be921adc41fb079ce25d36bdd6402ca70d56451
treeb978b2527e562b389d6c3fa4a4ca6ab0a17c399b
parent9b294d4056f47bac5985de89c847aa1a04d38bf0
InstCombine: Improve the result bitvect type when folding (cmp pred (load (gep GV, i)) C) to a bit test.

The original code used i32, and i64 if legal. This introduced unneeded
casts when they aren't legal, or when the index variable i has another
type. In order of preference: try to use i's type; use the smallest
fitting legal type (using an added DataLayout method); default to i32.
A testcase checks that this works when the index gep operand is i16.

Patch by : Ahmed Bougacha <ahmed.bougacha@gmail.com>
Reviewed by : Duncan

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177712 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/DataLayout.h
lib/IR/DataLayout.cpp
lib/Transforms/InstCombine/InstCombineCompares.cpp
test/Transforms/InstCombine/load-cmp.ll