summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/add.ll
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2016-09-07 12:03:03 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2016-09-07 12:03:03 +0000
commit8df5b9cf487701ff323d3a758c71349f8b7916a8 (patch)
treec7af87932457ff4c604dc34ed8cf9e6191e7c2b7 /llvm/test/Transforms/InstCombine/add.ll
parentbcbbb3987d06a757b90e32b87716f9af8db9565b (diff)
downloadbcm5719-llvm-8df5b9cf487701ff323d3a758c71349f8b7916a8.tar.gz
bcm5719-llvm-8df5b9cf487701ff323d3a758c71349f8b7916a8.zip
[InstCombine][SSE4a] Fix assertion failure caused by unsafe dyn_casts on the operands of extrq/extrqi intrinsic calls.
This patch fixes an assertion failure caused by unsafe dynamic casts on the constant operands of sse4a intrinsic calls to extrq/extrqi The combine logic that simplifies sse4a extrq/extrqi intrinsic calls currently checks if the input operands are constants. Internally, that logic relies on dyn_casts of values returned by calls to method Constant::getAggregateElement. However, method getAggregateElemet may return nullptr if the constant element cannot be retrieved. So, all the dyn_casts can potentially fail. This is what happens for example if a constexpr value is passed in input to an extrq/extrqi intrinsic call. This patch fixes the problem by using a dyn_cast_or_null (instead of a simple dyn_cast) on the result of each call to Constant::getAggregateElement. Added reproducible test cases to x86-sse4a.ll. Differential Revision: https://reviews.llvm.org/D24256 llvm-svn: 280804
Diffstat (limited to 'llvm/test/Transforms/InstCombine/add.ll')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud