diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index 544290b..dd09cf7 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -137,13 +137,13 @@
 	}
 
 	llvm::Value *lowerPMINMAX(llvm::Value *x, llvm::Value *y,
-							  llvm::ICmpInst::Predicate pred)
+	                          llvm::ICmpInst::Predicate pred)
 	{
 		return ::builder->CreateSelect(::builder->CreateICmp(pred, x, y), x, y);
 	}
 
 	llvm::Value *lowerPCMP(llvm::ICmpInst::Predicate pred, llvm::Value *x,
-						   llvm::Value *y, llvm::Type *dstTy)
+	                       llvm::Value *y, llvm::Type *dstTy)
 	{
 		return ::builder->CreateSExt(::builder->CreateICmp(pred, x, y), dstTy, "");
 	}
@@ -160,7 +160,7 @@
 		llvm::Value *v = ::builder->CreateShuffleVector(op, undef, mask);
 
 		return sext ? ::builder->CreateSExt(v, dstTy)
-					: ::builder->CreateZExt(v, dstTy);
+		            : ::builder->CreateZExt(v, dstTy);
 	}
 
 	llvm::Value *lowerPABS(llvm::Value *v)
@@ -174,7 +174,7 @@
 
 #if !defined(__i386__) && !defined(__x86_64__)
 	llvm::Value *lowerPFMINMAX(llvm::Value *x, llvm::Value *y,
-							   llvm::FCmpInst::Predicate pred)
+	                           llvm::FCmpInst::Predicate pred)
 	{
 		return ::builder->CreateSelect(::builder->CreateFCmp(pred, x, y), x, y);
 	}
@@ -398,7 +398,7 @@
 
 	public:
 		LLVMReactorJIT(const std::string &arch_,
-					   const llvm::SmallVectorImpl<std::string> &mattrs_) :
+		               const llvm::SmallVectorImpl<std::string> &mattrs_) :
 			arch(arch_),
 			mattrs(mattrs_.begin(), mattrs_.end()),
 			routineManager(nullptr),
@@ -581,7 +581,7 @@
 				case SCCP:                 passManager->add(llvm::createSCCPPass());                 break;
 				case ScalarReplAggregates: passManager->add(llvm::createSROAPass());                 break;
 				default:
-										   assert(false);
+				                           assert(false);
 				}
 			}
 
diff --git a/src/Reactor/LLVMRoutine.hpp b/src/Reactor/LLVMRoutine.hpp
index 0e70245..f353891 100644
--- a/src/Reactor/LLVMRoutine.hpp
+++ b/src/Reactor/LLVMRoutine.hpp
@@ -58,7 +58,7 @@
 	{
 	public:
 		LLVMRoutine(void *ent, void (*callback)(LLVMReactorJIT *, uint64_t),
-					LLVMReactorJIT *jit, uint64_t key)
+		            LLVMReactorJIT *jit, uint64_t key)
 			: entry(ent), dtor(callback), reactorJIT(jit), moduleKey(key)
 		{ }
 
