================
@@ -121,20 +122,35 @@ CGPointerAuthInfo CodeGenFunction::EmitPointerAuthInfo(
   if (!Schema)
     return CGPointerAuthInfo();
 
-  llvm::Value *Discriminator =
-      CGM.getPointerAuthOtherDiscriminator(Schema, SchemaDecl, SchemaType);
+  return EmitPointerAuthInfo(
+      Schema, StorageAddress,
+      CGM.getPointerAuthOtherDiscriminator(Schema, SchemaDecl, SchemaType));
+}
+
+CGPointerAuthInfo
+CodeGenFunction::EmitPointerAuthInfo(const PointerAuthSchema &Schema,
+                                     llvm::Value *StorageAddress,
+                                     llvm::ConstantInt *ExtraDiscriminator) {
+  if (!Schema)
+    return CGPointerAuthInfo();
+
+  PointerAuthSchema::Discrimination ExtraDiscKind =
+      Schema.getOtherDiscrimination();
+  assert((ExtraDiscKind == PointerAuthSchema::Discrimination::None ||
+          ExtraDiscriminator) &&
+         "extra discrimination is requested but no discriminator provided");
 
+  llvm::Value *Discriminator = ExtraDiscriminator;
   if (Schema.isAddressDiscriminated()) {
     assert(StorageAddress &&
            "address not provided for address-discriminated schema");
-
-    if (Discriminator)
+    if (ExtraDiscKind != PointerAuthSchema::Discrimination::None) {
----------------
ojhunt wrote:

You've got the assertion, so this doesn't need to be changed and should be 
reverted. Also as a heads up LLVM coding style says no braces for single 
_statement_ blocks, even if the statement is multiple lines long  :-/

https://github.com/llvm/llvm-project/pull/205808
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to