================
@@ -121,20 +122,38 @@ CGPointerAuthInfo CodeGenFunction::EmitPointerAuthInfo(
if (!Schema)
return CGPointerAuthInfo();
- llvm::Value *Discriminator =
- CGM.getPointerAuthOtherDiscriminator(Schema, SchemaDecl, SchemaType);
+ llvm::ConstantInt *Discriminator =
+ Schema.getOtherDiscrimination() ==
PointerAuthSchema::Discrimination::None
+ ? nullptr
+ : CGM.getPointerAuthOtherDiscriminator(Schema, SchemaDecl,
+ SchemaType);
+
+ return EmitPointerAuthInfo(Schema, StorageAddress, Discriminator);
+}
+
+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 gets provided");
+
----------------
ojhunt wrote:
I'm unsure of the reason for this assertion - how were you able to construct a
path where this was necessary?
https://github.com/llvm/llvm-project/pull/205808
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits