From b1bc9caef9af66f23d45cb2988d565e77fade2d3 Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Sat, 29 Jun 2019 17:23:18 +0300 Subject: [PATCH] [HIPIFY] Clang 7.1.0 support + Provide patch for clang's bug 38811 + Update Readme.md accordingly --- hipamd/hipify-clang/README.md | 4 ++-- .../patches/patch_for_clang_7.1.0_bug_38811.zip | Bin 0 -> 14641 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 hipamd/hipify-clang/patches/patch_for_clang_7.1.0_bug_38811.zip diff --git a/hipamd/hipify-clang/README.md b/hipamd/hipify-clang/README.md index 7744085f16..51fcc08bc1 100644 --- a/hipamd/hipify-clang/README.md +++ b/hipamd/hipify-clang/README.md @@ -53,9 +53,9 @@ If the target CUDA is [9.1](https://developer.nvidia.com/cuda-91-download-archiv | [**6.0.1**](http://releases.llvm.org/download.html#6.0.1) | [**9.0**](https://developer.nvidia.com/cuda-90-download-archive) | +
**LATEST STABLE RELEASE** | + | | [7.0.0](http://releases.llvm.org/download.html#7.0.0) | [9.2](https://developer.nvidia.com/cuda-92-download-archive) | -
not working due to
the clang's bug [38811](https://bugs.llvm.org/show_bug.cgi?id=38811)
+
[patch](patches/patch_for_clang_7.0.0_bug_38811.zip)*
| -
not working due to
the clang's bug [36384](https://bugs.llvm.org/show_bug.cgi?id=36384) | | [7.0.1](http://releases.llvm.org/download.html#7.0.1) | [9.2](https://developer.nvidia.com/cuda-92-download-archive) | -
not working due to
the clang's bug [38811](https://bugs.llvm.org/show_bug.cgi?id=38811)
+
[patch](patches/patch_for_clang_7.0.1_bug_38811.zip)*
| -
not working due to
the clang's bug [36384](https://bugs.llvm.org/show_bug.cgi?id=36384) | -| 7.1.0 | 9.2 (?) | -
LLVM 7.1.0
is not yet released | -
LLVM 7.1.0
is not yet released | +| [7.1.0](http://releases.llvm.org/download.html#7.1.0) | [9.2](https://developer.nvidia.com/cuda-92-download-archive) | -
not working due to
the clang's bug [38811](https://bugs.llvm.org/show_bug.cgi?id=38811)
+
[patch](patches/patch_for_clang_7.1.0_bug_38811.zip)*
| -
not working due to
the clang's bug [36384](https://bugs.llvm.org/show_bug.cgi?id=36384) | | [**8.0.0**](http://releases.llvm.org/download.html#8.0.0) | [**10.0**](https://developer.nvidia.com/cuda-10.0-download-archive) | -
not working due to
the clang's bug [38811](https://bugs.llvm.org/show_bug.cgi?id=38811)
+
[patch](patches/patch_for_clang_8.0.0_bug_38811.zip)*
| +
**LATEST STABLE RELEASE** | -| 8.0.1 | 10.1 (?) | -
LLVM 8.0.1
is not yet released | -
LLVM 8.0.1
is not yet released | +| 8.0.1 | 10.2 | -
LLVM 8.0.1
is not yet released | -
LLVM 8.0.1
is not yet released | `*` Download the patch and unpack it into your LLVM distributive directory; a few header files will be overwritten; rebuilding of LLVM is not needed. diff --git a/hipamd/hipify-clang/patches/patch_for_clang_7.1.0_bug_38811.zip b/hipamd/hipify-clang/patches/patch_for_clang_7.1.0_bug_38811.zip new file mode 100644 index 0000000000000000000000000000000000000000..35bde0cce403c159c3691dc09274f37c0c54e45e GIT binary patch literal 14641 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

j10_E1wk5$p#$(ov;US^kS5j# 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 z