Unlike other targets, ARM now uses BUILD_VECTORs post-legalization so they
can't be changed arbitrarily by the DAGCombiner without checking if it is running after legalization. llvm-svn: 107097
This commit is contained in:
parent
d200eda487
commit
269a89fd3a
|
@ -2322,7 +2322,8 @@ SDValue DAGCombiner::visitOR(SDNode *N) {
|
|||
}
|
||||
|
||||
// fold (or x, undef) -> -1
|
||||
if (N0.getOpcode() == ISD::UNDEF || N1.getOpcode() == ISD::UNDEF) {
|
||||
if (!LegalOperations &&
|
||||
(N0.getOpcode() == ISD::UNDEF || N1.getOpcode() == ISD::UNDEF)) {
|
||||
EVT EltVT = VT.isVector() ? VT.getVectorElementType() : VT;
|
||||
return DAG.getConstant(APInt::getAllOnesValue(EltVT.getSizeInBits()), VT);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
; RUN: llc < %s -march=arm -mattr=+neon
|
||||
|
||||
define void @main() nounwind {
|
||||
entry:
|
||||
store <2 x i64> undef, <2 x i64>* undef, align 16
|
||||
%0 = load <16 x i8>* undef, align 16 ; <<16 x i8>> [#uses=1]
|
||||
%1 = or <16 x i8> zeroinitializer, %0 ; <<16 x i8>> [#uses=1]
|
||||
store <16 x i8> %1, <16 x i8>* undef, align 16
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue