diff --git a/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp b/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp
index de4da74835ad9d110252d1b4c89e6b943d4a4864..0db9f231342fc400795b0ae67e8467e62a8f7812 100644
--- a/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp
+++ b/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp
@@ -347,6 +347,7 @@ void CodeGenTraversal::initRuntimeAPI() {
   Function* VI = M.getFunction("llvm.visc.init");
   assert(VI->getNumUses() == 1 && "__visc__init should only be used once");
 
+  DEBUG(errs() << "Gen Code to initialize NVPTX Timer\n");
   InitCall = cast<Instruction>(*VI->use_begin());
   initializeTimerSet(InitCall);
   switchToTimer(visc_TimerID_INIT_CTX, InitCall);
@@ -358,6 +359,7 @@ void CodeGenTraversal::initRuntimeAPI() {
   errs() << *VC << "\n";
   assert(VC->getNumUses() == 1 && "__visc__clear should only be used once");
 
+  DEBUG(errs() << "Gen Code to print NVPTX Timer\n");
   CleanupCall = cast<Instruction>(*VC->use_begin());
   printTimerSet(CleanupCall);
 
diff --git a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc
index b70f9e5655a0ba9d6d86959794e7d48f6c47f25a..81d791568b45f1f2befc7c0636ee239a98928621 100644
--- a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc
+++ b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc
@@ -73,12 +73,11 @@ __attribute__((noinline)) void basicSgemm( char transa, char transb, int m, int
     unsigned db[2] = {TILE_SZ,TILE_SZ};
     unsigned dg[2] = {m/TILE_SZ*db[0],n/TILE_SZ*db[1]};
 
-    void* sgemmDFG = __visc__node((void*) mysgemmNT, 2, 2, db[0], db[1], dg[0]/db[0], dg[1]/db[1], 12, A, bytesA, lda, B, bytesB, ldb, C, bytesC, ldc, k, alpha, beta, 0);
+    unsigned sgemmDFG = __visc__node(mysgemmNT, 2, 2, db[0], db[1], dg[0]/db[0], dg[1]/db[1], 12, A, bytesA, lda, B, bytesB, ldb, C, bytesC, ldc, k, alpha, beta, 0);
     __visc__wait(sgemmDFG);
 }
 
 int main (int argc, char *argv[]) {
-    __visc__init();
 
     struct pb_Parameters *params;
     struct pb_TimerSet timers;
@@ -89,6 +88,7 @@ int main (int argc, char *argv[]) {
     std::vector<float> matA, matBT;
 
     pb_InitializeTimerSet(&timers);
+    __visc__init();
 
     /* Read command line. Expect 3 inputs: A, B and B^T
        in column-major layout*/
diff --git a/llvm/test/VISC/parboil/common/include/visc.h b/llvm/test/VISC/parboil/common/include/visc.h
index 5daab54d3ae3b3dab3e5141fe13d4de91331e353..e311c73021ea14a5708194ffdab37c7500ea9e6b 100644
--- a/llvm/test/VISC/parboil/common/include/visc.h
+++ b/llvm/test/VISC/parboil/common/include/visc.h
@@ -9,8 +9,8 @@
 #ifdef __cplusplus
 extern "C" {
 void __visc__attributes(unsigned, ...);
-void __visc__wait(void*);
-void* __visc__node(void*, unsigned, unsigned, ...);
+void __visc__wait(unsigned);
+unsigned __visc__node(...);
 void __visc__init();
 void __visc__cleanup();
 #endif
diff --git a/llvm/test/VISC/parboil/common/mk/visc.mk b/llvm/test/VISC/parboil/common/mk/visc.mk
index bd6846a1b4315417e9d774f3a8e9d4cbedec58c4..58f032a734b4a674af7100a2d077c031c9c36456 100644
--- a/llvm/test/VISC/parboil/common/mk/visc.mk
+++ b/llvm/test/VISC/parboil/common/mk/visc.mk
@@ -2,7 +2,7 @@
 
 # Default language wide options
 LANG_CFLAGS=-I$(PARBOIL_ROOT)/common/include
-LANG_CXXFLAGS=$(LANG_CFLAGS)
+LANG_CXXFLAGS=$(LANG_CFLAGS) -fno-exceptions
 LANG_LDFLAGS=-lOpenCL -L$(OPENCL_LIB_PATH) -lrt
 
 CFLAGS=$(LANG_CFLAGS) $(PLATFORM_CFLAGS) $(APP_CFLAGS)