<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58864>58864</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [ProvenanceAnalysis] Assertion failed: (relatedCheck(B, A) == Result && "relatedCheck result depending on order of parameters!")
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dcci
      </td>
    </tr>
</table>

<pre>
    ```
% ./clang reduced.m -fobjc-arc -Os -c
```

```
Assertion failed: (relatedCheck(B, A) == Result && "relatedCheck result depending on order of parameters!"), function related, file ProvenanceAnalysis.cpp, line 187.
```

Testcase:
```
# 48 "/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/arm/_types.h" 3 4
_OSSwapInt16(
 )
{
} filesec_property_t;
typedef long NSInteger;
typedef unsigned long NSUInteger;
@protocol NSObject
@end
@interface NSObject <NSObject> {
}
+ (instancetype)alloc __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@end
#pragma clang assume_nonnull begin
@protocol NSCopying
@end
@protocol NSMutableCopying
@end
@protocol NSCoding
@end
@protocol NSSecureCoding <NSCoding>
@end
@protocol NSFastEnumeration
@end
@interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
typedef enum __attribute__((flag_enum,enum_extensibility(open))) NSStringEnumerationOptions : NSUInteger NSStringEnumerationOptions; enum NSStringEnumerationOptions : NSUInteger {
    NSStringEnumerationByLines = 0,
};
- (nullable instancetype)initWithUTF8String:(const char *)nullTerminatedCString __attribute__ ((format_arg(1)));
@end
@interface NSDictionary<__covariant KeyType, __covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
+ (instancetype)dictionaryWithObjects:(const ObjectType _Nonnull [_Nullable])objects forKeys:(const KeyType <NSCopying> _Nonnull [_Nullable])keys count:(NSUInteger)cnt;
@end
#pragma clang assume_nonnull end
typedef NSString *NSErrorDomain;
#pragma clang assume_nonnull begin
extern NSErrorDomain const NSPOSIXErrorDomain;
typedef NSString *NSErrorUserInfoKey;
extern NSErrorUserInfoKey const NSLocalizedDescriptionKey;
extern NSErrorUserInfoKey const NSLocalizedFailureReasonErrorKey;
@interface NSError : NSObject <NSCopying, NSSecureCoding> {
}
+ (instancetype)errorWithDomain:(NSErrorDomain)domain code:(NSInteger)code userInfo:(nullable NSDictionary<NSErrorUserInfoKey, id> *)dict;
@end
struct __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) SecKeychainAttribute
{
};
#pragma clang assume_nonnull end
#pragma clang assume_nonnull begin
enum __attribute__((enum_extensibility(open))) : NSInteger {
    NSNoSubelement = 4
};
#pragma clang assume_nonnull end
@implementation _DVTErrorRecoveryHandler
+ (NSError *)dvt_errorWithPOSIXErrorCode:(NSInteger)errorCode messageFormat:(NSString *)msgFormat, ...
{
    NSString * rsnString = [[NSString alloc] initWithUTF8String:strerror(errorCode)];
    NSString * keys[2] = { NSLocalizedDescriptionKey, NSLocalizedFailureReasonErrorKey };
    NSString * objs[2] = { rsnString, rsnString };
    NSDictionary * errorDict = [NSDictionary dictionaryWithObjects:objs forKeys:keys count:2];
    return [NSError errorWithDomain:NSPOSIXErrorDomain code:errorCode userInfo:errorDict];
}
@end
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNV0tzGjkQ_jVwUXkKxMPDgQMGU-uKY6eCs5vblNA0oEQjUZKGLPvr09I8GB62qfiyrinPILVa_fj6a2mp0_24NeyUT2fW6kxadECiFp1zydSaGEhzDmmUkZuVXv7gN8xwcvNsyQ0vxU9WXxqcWAvGCa3IigkJaas3IS0aG5DMQTrdAP-JP-9adEpw-xFp9Wb4kK9gc-lQcogPvmhzAVoWZlPYgkoFmorqtUnBEL0iW2ZYBg6MbdEurkStXvsqVzzYUWoKY2gR-WL0DhRTHCaKyb0VNuLbrZ-WQgHpxrfRG-6-gHWcWUC_LkvRHunHJNgxfxRLw8wev2awA6m3YPB7qrOMqfQRd3vRWqLZ88Xsk399Zvx58b3bi3qRTTFO89z6BUJxmaeAX8xk-D9x-y3YaIObENyt2Dh5Xix-se2Dcl2MYVwMEh-Mwq7bu-pjFuJggSdb401y-8S1euW0V53CikiNYX5aoDpYo9Wn07myYq0greS-nQq2-h3U7jTXEqeflz-Au3oGs1h_C1xoVoxDLYaYmNZLevekaXoV5DsPKqGs83n0RqGjTErNSZIw54xY5g6SxAeCxmyHUGRLIYXDXMT2l1g5n-9clTMS_M8MrGVr8IikNLdAdGGOUMIJJsV_CDHi9wSWVjgLT8Png2e0tzVsnTFSFBezNs8gUVqpXEqyhLVQlyI11ds9IvxiqBpin3Pnzb5SeqrTK6QWwHMDhWyRg3Jd7_69pXNm3b1CBw3zNfduoheYobDJ5CTrlUOYjjMnw1jTyNqwCpWAJlwCwEqydeInUYd_JfCvA0RwDQksA1Xns7av4dHz1v-3pcUV2t-QRFAU5lyvrMY5wb8Ly-72njL8shnpoCeHoqgAeOOrwuPLh42clIeH8T_Cbb69zONCt-cwGnM0xRG-YWgB9ZzsFbyAyYQKDFzm6iispIyrNhlzCTOYnLj7TkEcI2AmAjt7duxNk4TrHTOCKUc-wf4lGDwlzeECJGHGU8IHgRNGTkFbw_wiu6S1wT6Ixda2GcGDhSR5Ksu8NbhLnsp8tAbIK6OCUyzB0KGnRwpKz4_9QWff0PYTVRCuc-UKRQ0ipiOu3J9QUy1XVdWhXOnkaXFvjDYznTHkr1r71WTnC88ocqSGFO4_Lb48Lx6-X9L_hiXf8LjxoFYag1eLH2_SkKh3etQ8EHo6A8uNCPX4hxrm2EEQWF-BWa2CeFPRCerD_HvoPaG4q_sfeOUenFX0CkQ0A4owrkKeQiXQQAyOkrz0tpiu2eSkZC-EH40XaTA40IgvmIv4s87k6Pj7jVpoPBRNj7p0RdHvL_7FHN98RIHbfWR1xviUOX--dK8pwTxj2JB4hZpU2s4Pa9cW2R-cPF5rl1e0yALCr3SuJ73IlyAhA-VCt-p_wBssoGxb6Ao0TZLZ3y8Be18B2wOY_V94mJaI32Zp1KVWQHHnkro6DiwzvVgEUE1VB8J56HKV4IGBUDaz63IWwR9F0Un6mo3cryDGqvroM_N8jk8tEM6vyOvkYqfGqgmW-fzUxmMyBoeYnm3n2wPuQL3SsOHt3RvkF8jnbV4jzRSebYe97Wy72mOvvuH-mZ4DuwRdwUc_VkXqSOK1ZuwtaLTWo_ZIT0NlwOVI8kF3gZZzBj1vShV1HmDSIMza6uZeB9puNuHq2tiGcXc4vI3jYb_bbafjXjrqjVjbCSdhjLadX1d9eP8X1-x2buR449y2OMbM8Vlj8PJlxLW_p0q5q143eFkI9zm8zWKlg7_tDrzP7c14NKJ9GncGwz7t9UedmI0YpdBZrTopsOXtbRt5E6Qdh3KZtcWYdijtdju4pD8cdKPOajRi_f5wSPEkFdPUhxkzJSO_caTNum3GwYZlvrY4KYV19jCJzOOvslDpZ7nbaDNOORftYOs4GPobAfuCgw">