[PATCH] D24097: Add testcases for PR30188

Sebastian Pop via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 31 12:09:15 PDT 2016


sebpop created this revision.
sebpop added reviewers: jmolloy, danielcdh, davidxl, mkuper, dberlin.
sebpop added subscribers: llvm-commits, cfe-commits.

Add testcases to clang test/ to make sure that the combined middle-end
optimizations do not regress on optimizing the number of loads in the loops.


https://reviews.llvm.org/D24097

Files:
  clang/test/CodeGen/pr30188.c
  clang/test/CodeGenCXX/pr30188.cpp

Index: clang/test/CodeGenCXX/pr30188.cpp
===================================================================
--- /dev/null
+++ clang/test/CodeGenCXX/pr30188.cpp
@@ -0,0 +1,24 @@
+// RUN: %clang_cc1 -O2 -emit-llvm -o - %s | FileCheck %s
+
+// Check that optimizers are able to optimize the number of loads in the loop.
+// CHECK: load
+// CHECK-NOT: load
+
+int test(float exp, float *array) {
+  int hi = 255;
+  int lo = 0;
+  int offset = 0;
+
+  while(hi > lo) {
+    unsigned delta = (hi - lo) / 2u;
+    delta = 1u > delta ? 1u : delta;
+    offset = lo + delta;
+
+    if (array[offset] > exp)
+      hi = hi - delta;
+    else
+      lo = lo + delta;
+  }
+
+  return offset;
+}
Index: clang/test/CodeGen/pr30188.c
===================================================================
--- /dev/null
+++ clang/test/CodeGen/pr30188.c
@@ -0,0 +1,32 @@
+// RUN: %clang_cc1 -O2 -emit-llvm -o - %s | FileCheck %s
+
+// Check that optimizers are able to optimize the number of loads in the loop.
+// CHECK: load
+// CHECK: load
+// CHECK: load
+// CHECK-NOT: load
+
+struct b {
+  int x_;
+};
+
+struct a {
+  int l_;
+  struct b *data_;
+};
+
+int BinarySearch(struct a *input, struct b t) {
+  if (input->l_ > 0) {
+    int low = 0;
+    int high = input->l_;
+    while (high != low + 1) {
+      int mid = (high + low) / 2;
+      if (input->data_[mid].x_ > t.x_)
+        high = mid;
+      else
+        low = mid;
+    }
+    return low;
+  }
+  return -1;
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D24097.69890.patch
Type: text/x-patch
Size: 1465 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160831/87cced5f/attachment.bin>


More information about the llvm-commits mailing list