[llvm-branch-commits] [clang] [clang] Define ptrauth_sign_constant builtin. (PR #93904)
Daniil Kovalev via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jun 7 03:47:05 PDT 2024
================
@@ -0,0 +1,63 @@
+//===--- CGPointerAuth.cpp - IR generation for pointer authentication -----===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains common routines relating to the emission of
+// pointer authentication operations.
+//
+//===----------------------------------------------------------------------===//
+
+#include "CodeGenModule.h"
+#include "clang/CodeGen/CodeGenABITypes.h"
+
+using namespace clang;
+using namespace CodeGen;
+
+/// Build a signed-pointer "ptrauth" constant.
+static llvm::ConstantPtrAuth *
+buildConstantAddress(CodeGenModule &CGM, llvm::Constant *Pointer, unsigned Key,
+ llvm::Constant *StorageAddress,
+ llvm::Constant *OtherDiscriminator) {
+ llvm::Constant *AddressDiscriminator = nullptr;
----------------
kovdan01 wrote:
Do we need to set this to `nullptr`? We 100% define this in either `if` or `else` branch and do not use the unitialized value before. Same applies to `IntegerDiscriminator` below.
You can also use smth like
```
llvm::Constant *AddressDiscriminator =
(StorageAddress ? StorageAddress
: llvm::Constant::getNullValue(CGM.UnqualPtrTy));
assert(!StorageAddress || (StorageAddress->getType() == CGM.UnqualPtrTy));
```
https://github.com/llvm/llvm-project/pull/93904
More information about the llvm-branch-commits
mailing list