X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FTarget%2FAArch64%2FAArch64ISelLowering.cpp;h=464f56780dfd1a74c24704a7aafe53cb81a2a806;hp=f1073beb32f32576d1a63cf5886466f2a24b0c39;hb=f99fa6d5fd3c176ffdd9e723fe97d640667b34e6;hpb=ba5a585242e258b67a00ecb4f6708b634d098c17 diff --git a/lib/Target/AArch64/AArch64ISelLowering.cpp b/lib/Target/AArch64/AArch64ISelLowering.cpp index f1073beb32f..464f56780df 100644 --- a/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -7201,6 +7201,12 @@ static SDValue performConcatVectorsCombine(SDNode *N, (N00VT == MVT::v2i64 || N00VT == MVT::v4i32) && N00VT.getScalarSizeInBits() == 4 * VT.getScalarSizeInBits()) { MVT MidVT = (N00VT == MVT::v2i64 ? MVT::v2i32 : MVT::v4i16); +#if defined(__GNUC__) +#if __GNUC__ == 4 && __GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ == 2 + // FIXME: g++-4.7.2 might miscompile PerformDAGCombine(). + asm volatile("":::"memory"); +#endif +#endif MVT ConcatMidVT = MVT::getVectorVT(MidVT.getVectorElementType(), MidVT.getVectorNumElements() * 2); return DAG.getNode(