Forráskód Böngészése

[spirv] Require source location for atomicCompareExchange.

Ehsan Nasiri 6 éve
szülő
commit
589dd04a9e

+ 1 - 1
tools/clang/include/clang/SPIRV/SpirvBuilder.h

@@ -224,7 +224,7 @@ public:
       spv::MemorySemanticsMask equalMemorySemantics,
       spv::MemorySemanticsMask unequalMemorySemantics,
       SpirvInstruction *valueToOp, SpirvInstruction *comparator,
-      SourceLocation loc = {});
+      SourceLocation);
 
   /// \brief Creates an OpSampledImage SPIR-V instruction with proper
   /// decorations for the given parameters.

+ 2 - 2
tools/clang/lib/SPIRV/SpirvEmitter.cpp

@@ -2728,7 +2728,7 @@ SpirvInstruction *SpirvEmitter::processRWByteAddressBufferAtomicMethods(
     auto *originalVal = spvBuilder.createAtomicCompareExchange(
         astContext.UnsignedIntTy, ptr, spv::Scope::Device,
         spv::MemorySemanticsMask::MaskNone, spv::MemorySemanticsMask::MaskNone,
-        doExpr(expr->getArg(2)), comparator);
+        doExpr(expr->getArg(2)), comparator, srcLoc);
     if (isCompareExchange)
       spvBuilder.createStore(doExpr(expr->getArg(3)), originalVal);
   } else {
@@ -6828,7 +6828,7 @@ SpirvEmitter::processIntrinsicInterlockedMethod(const CallExpr *expr,
     auto *valueInstr = doArg(expr, 2);
     auto *originalVal = spvBuilder.createAtomicCompareExchange(
         baseType, ptr, spv::Scope::Device, spv::MemorySemanticsMask::MaskNone,
-        spv::MemorySemanticsMask::MaskNone, valueInstr, comparator);
+        spv::MemorySemanticsMask::MaskNone, valueInstr, comparator, srcLoc);
     if (isCompareExchange)
       writeToOutputArg(originalVal, expr, 3);
   } else {