[PATCH] D26292: Discard @llvm.invariant.group.barrier in -O0 code generation

Richard Smith via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 3 17:01:54 PDT 2016


rsmith created this revision.
rsmith added a reviewer: hfinkel.
rsmith added a subscriber: llvm-commits.
rsmith set the repository for this revision to rL LLVM.

Fix isel failure from -O0 by discarding @llvm.invariant.group.barrier intrinsics.


Repository:
  rL LLVM

https://reviews.llvm.org/D26292

Files:
  lib/CodeGen/SelectionDAG/FastISel.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  test/CodeGen/Generic/intrinsics.ll


Index: test/CodeGen/Generic/intrinsics.ll
===================================================================
--- test/CodeGen/Generic/intrinsics.ll
+++ test/CodeGen/Generic/intrinsics.ll
@@ -1,4 +1,5 @@
 ; RUN: llc < %s
+; RUN: llc -O0 < %s
 
 ;; SQRT
 declare float @llvm.sqrt.f32(float)
@@ -38,3 +39,9 @@
         ret double %I
 }
 
+declare i8* @llvm.invariant.group.barrier(i8*)
+
+define i8* @barrier(i8* %p) {
+        %q = call i8* @llvm.invariant.group.barrier(i8* %p)
+        ret i8* %q
+}
Index: lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
===================================================================
--- lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -5410,6 +5410,7 @@
   }
   case Intrinsic::annotation:
   case Intrinsic::ptr_annotation:
+  case Intrinsic::invariant_group_barrier:
     // Drop the intrinsic, but forward the value
     setValue(&I, getValue(I.getOperand(0)));
     return nullptr;
Index: lib/CodeGen/SelectionDAG/FastISel.cpp
===================================================================
--- lib/CodeGen/SelectionDAG/FastISel.cpp
+++ lib/CodeGen/SelectionDAG/FastISel.cpp
@@ -1216,6 +1216,7 @@
     updateValueMap(II, ResultReg);
     return true;
   }
+  case Intrinsic::invariant_group_barrier:
   case Intrinsic::expect: {
     unsigned ResultReg = getRegForValue(II->getArgOperand(0));
     if (!ResultReg)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26292.76903.patch
Type: text/x-patch
Size: 1421 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161104/5e0d6981/attachment.bin>


More information about the llvm-commits mailing list