diff -uNr cfe-3.9.0.src.orig/lib/Driver/Tools.cpp cfe-3.9.0.src/lib/Driver/Tools.cpp
--- cfe-3.9.0.src.orig/lib/Driver/Tools.cpp	2016-08-13 16:43:56.000000000 -0400
+++ cfe-3.9.0.src/lib/Driver/Tools.cpp	2016-11-01 20:08:04.000000000 -0400
@@ -3061,12 +3061,18 @@
 
   switch (getOpenMPRuntime(TC, Args)) {
   case OMPRT_OMP:
+    // Help clang find libomp.dylib
+    CmdArgs.push_back("-L@FINK_PREFIX@/lib/libomp");
     CmdArgs.push_back("-lomp");
     break;
   case OMPRT_GOMP:
+    // Help clang find libgomp.dylib
+    CmdArgs.push_back("-L@FINK_PREFIX@/lib/libomp");
     CmdArgs.push_back("-lgomp");
     break;
   case OMPRT_IOMP5:
+    // Help clang find libiomp5.dylib
+    CmdArgs.push_back("-L@FINK_PREFIX@/lib/libomp");
     CmdArgs.push_back("-liomp5");
     break;
   case OMPRT_Unknown:
@@ -5031,6 +5037,8 @@
     case OMPRT_OMP:
     case OMPRT_IOMP5:
       // Clang can generate useful OpenMP code for these two runtime libraries.
+      // Automatically find omp.h from libomp-dev
+      CmdArgs.push_back("-I@FINK_PREFIX@/include/libomp");
       CmdArgs.push_back("-fopenmp");
 
       // If no option regarding the use of TLS in OpenMP codegeneration is
@@ -9524,9 +9532,13 @@
         // Also link the particular OpenMP runtimes.
         switch (getOpenMPRuntime(ToolChain, Args)) {
         case OMPRT_OMP:
+	  // Help clang find libomp.dylib
+	  CmdArgs.push_back("-L@FINK_PREFIX@/lib/libomp");
           CmdArgs.push_back("-lomp");
           break;
         case OMPRT_GOMP:
+	  // Help clang find libgomp.dylib
+	  CmdArgs.push_back("-L@FINK_PREFIX@/lib/libomp");
           CmdArgs.push_back("-lgomp");
 
           // FIXME: Exclude this for platforms with libgomp that don't require
@@ -9534,6 +9546,8 @@
           CmdArgs.push_back("-lrt");
           break;
         case OMPRT_IOMP5:
+	  // Help clang find libiomp5.dylib
+	  CmdArgs.push_back("-L@FINK_PREFIX@/lib/libomp");
           CmdArgs.push_back("-liomp5");
           break;
         case OMPRT_Unknown:
