| Index: lib/Transforms/NaCl/ResolvePNaClIntrinsics.cpp
 | 
| diff --git a/lib/Transforms/NaCl/ResolvePNaClIntrinsics.cpp b/lib/Transforms/NaCl/ResolvePNaClIntrinsics.cpp
 | 
| index 25e1a8620b9f78b5b06ed00f8a4b4280a5bb9e44..fc5138574d4d20812e8ad2966bcdfcd201891f79 100644
 | 
| --- a/lib/Transforms/NaCl/ResolvePNaClIntrinsics.cpp
 | 
| +++ b/lib/Transforms/NaCl/ResolvePNaClIntrinsics.cpp
 | 
| @@ -18,6 +18,8 @@
 | 
|  
 | 
|  #include "llvm/ADT/SmallVector.h"
 | 
|  #include "llvm/IR/Constant.h"
 | 
| +#include "llvm/IR/DerivedTypes.h"
 | 
| +#include "llvm/IR/InlineAsm.h"
 | 
|  #include "llvm/IR/Instructions.h"
 | 
|  #include "llvm/IR/IntrinsicInst.h"
 | 
|  #include "llvm/IR/Intrinsics.h"
 | 
| @@ -242,6 +244,20 @@ private:
 | 
|        I = new FenceInst(M->getContext(),
 | 
|                          thawMemoryOrder(Call->getArgOperand(0)), SS, Call);
 | 
|        break;
 | 
| +    case Intrinsic::nacl_atomic_fence_all: {
 | 
| +      FunctionType *FTy =
 | 
| +          FunctionType::get(Type::getVoidTy(M->getContext()), false);
 | 
| +      std::string AsmString; // Empty.
 | 
| +      std::string Constraints("~{memory}");
 | 
| +      bool HasSideEffect = true;
 | 
| +      CallInst *Asm = CallInst::Create(
 | 
| +          InlineAsm::get(FTy, AsmString, Constraints, HasSideEffect), "", Call);
 | 
| +      Asm->setDebugLoc(Call->getDebugLoc());
 | 
| +      I = new FenceInst(M->getContext(), SequentiallyConsistent, SS, Asm);
 | 
| +      Asm = CallInst::Create(
 | 
| +          InlineAsm::get(FTy, AsmString, Constraints, HasSideEffect), "", I);
 | 
| +      Asm->setDebugLoc(Call->getDebugLoc());
 | 
| +    } break;
 | 
|      }
 | 
|      I->setName(Call->getName());
 | 
|      I->setDebugLoc(Call->getDebugLoc());
 | 
| 
 |