anchor.diff:  , cmake
   , git
   
  -, llvmPackages_8
  +, llvmPackages_11
   , spirv-llvm-translator
   
   , buildWithPatches ? true
   }:
   
   let
  -  llvmPkgs = llvmPackages_8 // {
  +  llvmPkgs = llvmPackages_11 // {
       inherit spirv-llvm-translator;
     };
   
  
positive.code:   in
      stdenv.mkDerivation rec {
        pname = "opencl-clang";
        version = "unstable-2019-08-16";
  
        inherit passthru;
  
        src = fetchFromGitHub {
          owner = "intel";
          repo = "opencl-clang";
          rev = "94af090661d7c953c516c97a25ed053c744a0737";
          sha256 = "05cg89m62nqjqm705h7gpdz4jd4hiczg8944dcjsvaybrqv3hcm5";
        };
  
        patches = [
  
negative.code:     patchesOut = stdenv.mkDerivation rec {
        pname = "opencl-clang-patches";
        inherit (library) version src patches;
        # Clang patches assume the root is the llvm root dir
        # but clang root in nixpkgs is the clang sub-directory
        postPatch = ''
          for filename in patches/clang/*.patch; do
            substituteInPlace "$filename" \
              --replace "a/clang/" "a/" \
              --replace "b/clang/" "b/"
          done
        '';
  
        installPhase = ''
          [ -d patches ] && cp -r patches/ $out || mkdir $out
          mkdir -p $out/clang $out/llvm
        '';
      };
    };
  
    library = let
  