summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2017-03-15 07:15:50 +1000
committerDave Airlie <airlied@redhat.com>2017-03-15 09:51:53 +1000
commit7372e3cf5f2df9dd2ec0423a4425baad098bf326 (patch)
tree2631ae7604f9f22dc2975a43c57fa826ff9113e8
parent3ece76f03dc01bb654f47864b5da3a72c250c8b4 (diff)
radv/ac: workaround regression in llvm 4.0 release
LLVM 4.0 released with a pretty messy regression, that hopefully get fixed in the future. This work around was proposed by Tom, and it fixes the CTS regressions here at least, I'm not sure if this will cause any major side effects, but correctness over speed and all that. radeonsi should possibly consider the same workaround until an llvm fix can be found. Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/amd/common/ac_llvm_util.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c
index a2fe631c00f..3687e98c85f 100644
--- a/src/amd/common/ac_llvm_util.c
+++ b/src/amd/common/ac_llvm_util.c
@@ -26,7 +26,7 @@
#include "ac_llvm_util.h"
#include "util/bitscan.h"
#include <llvm-c/Core.h>
-
+#include <llvm-c/Support.h>
#include "c11/threads.h"
#include <assert.h>
@@ -39,6 +39,17 @@ static void ac_init_llvm_target()
LLVMInitializeAMDGPUTarget();
LLVMInitializeAMDGPUTargetMC();
LLVMInitializeAMDGPUAsmPrinter();
+
+ /*
+ * Workaround for bug in llvm 4.0 that causes image intrinsics
+ * to disappear.
+ * https://reviews.llvm.org/D26348
+ */
+#if HAVE_LLVM >= 0x0400
+ const char *argv[2] = {"mesa", "-simplifycfg-sink-common=false"};
+ LLVMParseCommandLineOptions(2, argv, NULL);
+#endif
+
}
static once_flag ac_init_llvm_target_once_flag = ONCE_FLAG_INIT;