================ @@ -6765,12 +6765,255 @@ llvm::Value *CGOpenMPRuntime::emitNumThreadsForTargetDirective( namespace { LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(); +/// Utility to compare expression locations. +/// Returns true if expr-loc of LHS is less-than that of RHS. +/// This function asserts that both expressions have valid expr-locations. +static bool compareExprLocs(const Expr *LHS, const Expr *RHS) { + // Assert that neither LHS nor RHS can be null + assert(LHS && "LHS expression cannot be null"); + assert(RHS && "RHS expression cannot be null"); + + // Get source locations + SourceLocation LocLHS = LHS->getExprLoc(); + SourceLocation LocRHS = RHS->getExprLoc(); + + // Assert that we have valid source locations + assert(LocLHS.isValid() && "LHS expression must have valid source location"); + assert(LocRHS.isValid() && "RHS expression must have valid source location"); + + // Compare source locations for deterministic ordering + return LocLHS < LocRHS; +} + // Utility to handle information from clauses associated with a given // construct that use mappable expressions (e.g. 'map' clause, 'to' clause). // It provides a convenient interface to obtain the information and generate // code for that information. class MappableExprsHandler { public: + /// Custom comparator for attach-pointer expressions that compares them by + /// complexity (i.e. their component-depth) first, then by their expr-locs if + /// they are semantically different. ---------------- alexey-bataev wrote:
Why just the order, in which they are specified, does not work? https://github.com/llvm/llvm-project/pull/155625 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits