mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[InstCombine] visitBitCast(): do not crash on weird bitcast <1 x i8*> to i8*
Even if we know that RHS of a bitcast is a pointer, we can't assume LHS is, because it might be a single-element vector of pointer.
This commit is contained in:
parent
1208cc1611
commit
0a9046a444
@ -2471,8 +2471,9 @@ Instruction *InstCombiner::visitBitCast(BitCastInst &CI) {
|
||||
if (DestTy == Src->getType())
|
||||
return replaceInstUsesWith(CI, Src);
|
||||
|
||||
if (PointerType *DstPTy = dyn_cast<PointerType>(DestTy)) {
|
||||
if (isa<PointerType>(SrcTy) && isa<PointerType>(DestTy)) {
|
||||
PointerType *SrcPTy = cast<PointerType>(SrcTy);
|
||||
PointerType *DstPTy = cast<PointerType>(DestTy);
|
||||
Type *DstElTy = DstPTy->getElementType();
|
||||
Type *SrcElTy = SrcPTy->getElementType();
|
||||
|
||||
|
@ -561,3 +561,9 @@ define void @constant_fold_vector_to_half() {
|
||||
store volatile half bitcast (<4 x i4> <i4 0, i4 0, i4 0, i4 4> to half), half* undef
|
||||
ret void
|
||||
}
|
||||
|
||||
; Ensure that we do not crash when looking at such a weird bitcast.
|
||||
define i8* @bitcast_from_single_element_pointer_vector_to_pointer(<1 x i8*> %ptrvec) {
|
||||
%ptr = bitcast <1 x i8*> %ptrvec to i8*
|
||||
ret i8* %ptr
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user