@@ -2019,9 +2019,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
2019
2019
Function *F = CGM.getIntrinsic (Intrinsic::arm_strexd);
2020
2020
llvm::Type *STy = llvm::StructType::get (Int32Ty, Int32Ty, NULL );
2021
2021
2022
- Value *One = llvm::ConstantInt::get (Int32Ty, 1 );
2023
- Value *Tmp = Builder.CreateAlloca (ConvertType (E->getArg (0 )->getType ()),
2024
- One);
2022
+ Value *Tmp = CreateMemTemp (E->getArg (0 )->getType ());
2025
2023
Value *Val = EmitScalarExpr (E->getArg (0 ));
2026
2024
Builder.CreateStore (Val, Tmp);
2027
2025
@@ -2928,19 +2926,15 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
2928
2926
return Builder.CreateExtractElement (Ops[0 ],
2929
2927
llvm::ConstantInt::get (Ops[1 ]->getType (), 0 ));
2930
2928
case X86::BI__builtin_ia32_ldmxcsr: {
2931
- llvm::Type *PtrTy = Int8PtrTy;
2932
- Value *One = llvm::ConstantInt::get (Int32Ty, 1 );
2933
- Value *Tmp = Builder.CreateAlloca (Int32Ty, One);
2929
+ Value *Tmp = CreateMemTemp (E->getArg (0 )->getType ());
2934
2930
Builder.CreateStore (Ops[0 ], Tmp);
2935
2931
return Builder.CreateCall (CGM.getIntrinsic (Intrinsic::x86_sse_ldmxcsr),
2936
- Builder.CreateBitCast (Tmp, PtrTy ));
2932
+ Builder.CreateBitCast (Tmp, Int8PtrTy ));
2937
2933
}
2938
2934
case X86::BI__builtin_ia32_stmxcsr: {
2939
- llvm::Type *PtrTy = Int8PtrTy;
2940
- Value *One = llvm::ConstantInt::get (Int32Ty, 1 );
2941
- Value *Tmp = Builder.CreateAlloca (Int32Ty, One);
2935
+ Value *Tmp = CreateMemTemp (E->getArg (0 )->getType ());
2942
2936
Builder.CreateCall (CGM.getIntrinsic (Intrinsic::x86_sse_stmxcsr),
2943
- Builder.CreateBitCast (Tmp, PtrTy ));
2937
+ Builder.CreateBitCast (Tmp, Int8PtrTy ));
2944
2938
return Builder.CreateLoad (Tmp, " stmxcsr" );
2945
2939
}
2946
2940
case X86::BI__builtin_ia32_storehps:
@@ -3131,13 +3125,10 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
3131
3125
}
3132
3126
// AVX2 broadcast
3133
3127
case X86::BI__builtin_ia32_vbroadcastsi256: {
3134
- llvm::Type *VecTy = llvm::VectorType::get (Int64Ty, 2 );
3135
- llvm::Type *PtrTy = Int8PtrTy;
3136
- Value *One = llvm::ConstantInt::get (Int32Ty, 1 );
3137
- Value *Tmp = Builder.CreateAlloca (VecTy, One);
3138
- Builder.CreateStore (Ops[0 ], Tmp);
3139
- return Builder.CreateCall (CGM.getIntrinsic (Intrinsic::x86_avx2_vbroadcasti128),
3140
- Builder.CreateBitCast (Tmp, PtrTy));
3128
+ Value *VecTmp = CreateMemTemp (E->getArg (0 )->getType ());
3129
+ Builder.CreateStore (Ops[0 ], VecTmp);
3130
+ Value *F = CGM.getIntrinsic (Intrinsic::x86_avx2_vbroadcasti128);
3131
+ return Builder.CreateCall (F, Builder.CreateBitCast (VecTmp, Int8PtrTy));
3141
3132
}
3142
3133
}
3143
3134
}
0 commit comments