-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[CodeGen][Hexagon] Replace PointerType::getUnqual(Type) with opaque version (NFC) #126274
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CodeGen][Hexagon] Replace PointerType::getUnqual(Type) with opaque version (NFC) #126274
Conversation
@llvm/pr-subscribers-clang @llvm/pr-subscribers-clang-codegen Author: Mats Jun Larsen (junlarsen) ChangesFollow-up to #123569 The obsolete bitcasts on the LoadInsts are also removed. Full diff: https://github.com/llvm/llvm-project/pull/126274.diff 1 Files Affected:
diff --git a/clang/lib/CodeGen/Targets/Hexagon.cpp b/clang/lib/CodeGen/Targets/Hexagon.cpp
index 8fd2a81494d998c..6ad247a5056d376 100644
--- a/clang/lib/CodeGen/Targets/Hexagon.cpp
+++ b/clang/lib/CodeGen/Targets/Hexagon.cpp
@@ -8,6 +8,7 @@
#include "ABIInfoImpl.h"
#include "TargetInfo.h"
+#include "llvm/IR/DerivedTypes.h"
using namespace clang;
using namespace clang::CodeGen;
@@ -336,10 +337,6 @@ Address HexagonABIInfo::EmitVAArgForHexagonLinux(CodeGenFunction &CGF,
// Implement the block where argument is in register saved area
CGF.EmitBlock(InRegBlock);
- llvm::Type *PTy = CGF.ConvertType(Ty);
- llvm::Value *__saved_reg_area_p = CGF.Builder.CreateBitCast(
- __current_saved_reg_area_pointer, llvm::PointerType::getUnqual(PTy));
-
CGF.Builder.CreateStore(__new_saved_reg_area_pointer,
__current_saved_reg_area_pointer_p);
@@ -388,22 +385,16 @@ Address HexagonABIInfo::EmitVAArgForHexagonLinux(CodeGenFunction &CGF,
CGF.Builder.CreateStore(__new_overflow_area_pointer,
__current_saved_reg_area_pointer_p);
- // Bitcast the overflow area pointer to the type of argument.
- llvm::Type *OverflowPTy = CGF.ConvertTypeForMem(Ty);
- llvm::Value *__overflow_area_p = CGF.Builder.CreateBitCast(
- __overflow_area_pointer, llvm::PointerType::getUnqual(OverflowPTy));
-
CGF.EmitBranch(ContBlock);
-
// Get the correct pointer to load the variable argument
// Implement the ContBlock
CGF.EmitBlock(ContBlock);
llvm::Type *MemTy = CGF.ConvertTypeForMem(Ty);
- llvm::Type *MemPTy = llvm::PointerType::getUnqual(MemTy);
- llvm::PHINode *ArgAddr = CGF.Builder.CreatePHI(MemPTy, 2, "vaarg.addr");
- ArgAddr->addIncoming(__saved_reg_area_p, InRegBlock);
- ArgAddr->addIncoming(__overflow_area_p, OnStackBlock);
+ llvm::PHINode *ArgAddr = CGF.Builder.CreatePHI(
+ llvm::PointerType::getUnqual(MemTy->getContext()), 2, "vaarg.addr");
+ ArgAddr->addIncoming(__new_saved_reg_area_pointer, InRegBlock);
+ ArgAddr->addIncoming(__overflow_area_pointer, OnStackBlock);
return Address(ArgAddr, MemTy, CharUnits::fromQuantity(ArgAlign));
}
|
@llvm/pr-subscribers-backend-hexagon Author: Mats Jun Larsen (junlarsen) ChangesFollow-up to #123569 The obsolete bitcasts on the LoadInsts are also removed. Full diff: https://github.com/llvm/llvm-project/pull/126274.diff 1 Files Affected:
diff --git a/clang/lib/CodeGen/Targets/Hexagon.cpp b/clang/lib/CodeGen/Targets/Hexagon.cpp
index 8fd2a81494d998c..6ad247a5056d376 100644
--- a/clang/lib/CodeGen/Targets/Hexagon.cpp
+++ b/clang/lib/CodeGen/Targets/Hexagon.cpp
@@ -8,6 +8,7 @@
#include "ABIInfoImpl.h"
#include "TargetInfo.h"
+#include "llvm/IR/DerivedTypes.h"
using namespace clang;
using namespace clang::CodeGen;
@@ -336,10 +337,6 @@ Address HexagonABIInfo::EmitVAArgForHexagonLinux(CodeGenFunction &CGF,
// Implement the block where argument is in register saved area
CGF.EmitBlock(InRegBlock);
- llvm::Type *PTy = CGF.ConvertType(Ty);
- llvm::Value *__saved_reg_area_p = CGF.Builder.CreateBitCast(
- __current_saved_reg_area_pointer, llvm::PointerType::getUnqual(PTy));
-
CGF.Builder.CreateStore(__new_saved_reg_area_pointer,
__current_saved_reg_area_pointer_p);
@@ -388,22 +385,16 @@ Address HexagonABIInfo::EmitVAArgForHexagonLinux(CodeGenFunction &CGF,
CGF.Builder.CreateStore(__new_overflow_area_pointer,
__current_saved_reg_area_pointer_p);
- // Bitcast the overflow area pointer to the type of argument.
- llvm::Type *OverflowPTy = CGF.ConvertTypeForMem(Ty);
- llvm::Value *__overflow_area_p = CGF.Builder.CreateBitCast(
- __overflow_area_pointer, llvm::PointerType::getUnqual(OverflowPTy));
-
CGF.EmitBranch(ContBlock);
-
// Get the correct pointer to load the variable argument
// Implement the ContBlock
CGF.EmitBlock(ContBlock);
llvm::Type *MemTy = CGF.ConvertTypeForMem(Ty);
- llvm::Type *MemPTy = llvm::PointerType::getUnqual(MemTy);
- llvm::PHINode *ArgAddr = CGF.Builder.CreatePHI(MemPTy, 2, "vaarg.addr");
- ArgAddr->addIncoming(__saved_reg_area_p, InRegBlock);
- ArgAddr->addIncoming(__overflow_area_p, OnStackBlock);
+ llvm::PHINode *ArgAddr = CGF.Builder.CreatePHI(
+ llvm::PointerType::getUnqual(MemTy->getContext()), 2, "vaarg.addr");
+ ArgAddr->addIncoming(__new_saved_reg_area_pointer, InRegBlock);
+ ArgAddr->addIncoming(__overflow_area_pointer, OnStackBlock);
return Address(ArgAddr, MemTy, CharUnits::fromQuantity(ArgAlign));
}
|
@@ -8,6 +8,7 @@ | |||
|
|||
#include "ABIInfoImpl.h" | |||
#include "TargetInfo.h" | |||
#include "llvm/IR/DerivedTypes.h" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think the extra include is needed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Likely not, I think my LSP automatically inserts them when it completes stuff like PointerType::get. I'll remove it and the ones in the other PR too
…ersion (NFC) (llvm#126274) Follow-up to llvm#123569 The obsolete bitcasts on the LoadInsts are also removed.
Follow-up to #123569
The obsolete bitcasts on the LoadInsts are also removed.