From 2371c5a0e06d22b48da0427cebaf53a5e5c54635 Mon Sep 17 00:00:00 2001 From: Arthur Eubanks Date: Wed, 16 Mar 2022 11:21:27 -0700 Subject: [OpaquePtr][ARM] Use elementtype on ldrex/ldaex/stlex/strex Includes verifier changes checking the elementtype, clang codegen changes to emit the elementtype, and ISel changes using the elementtype. Basically the same as D120527. Reviewed By: #opaque-pointers, nikic Differential Revision: https://reviews.llvm.org/D121847 --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp') diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 3ad5fd7..afe18c5 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -52,6 +52,7 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/Intrinsics.h" #include "llvm/IR/IntrinsicsAArch64.h" +#include "llvm/IR/IntrinsicsARM.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Metadata.h" #include "llvm/IR/Module.h" @@ -4144,11 +4145,23 @@ Error BitcodeReader::propagateAttributeTypes(CallBase *CB, case Intrinsic::aarch64_ldaxr: case Intrinsic::aarch64_ldxr: case Intrinsic::aarch64_stlxr: - case Intrinsic::aarch64_stxr: { - unsigned ArgNo = CB->getIntrinsicID() == Intrinsic::aarch64_stlxr || - CB->getIntrinsicID() == Intrinsic::aarch64_stxr - ? 1 - : 0; + case Intrinsic::aarch64_stxr: + case Intrinsic::arm_ldaex: + case Intrinsic::arm_ldrex: + case Intrinsic::arm_stlex: + case Intrinsic::arm_strex: { + unsigned ArgNo; + switch (CB->getIntrinsicID()) { + case Intrinsic::aarch64_stlxr: + case Intrinsic::aarch64_stxr: + case Intrinsic::arm_stlex: + case Intrinsic::arm_strex: + ArgNo = 1; + break; + default: + ArgNo = 0; + break; + } if (!Attrs.getParamElementType(ArgNo)) { Type *ElTy = getPtrElementTypeByID(ArgTyIDs[ArgNo]); if (!ElTy) -- cgit v1.1