[llvm-commits] CVS: llvm/tools/bugpoint/BugDriver.cpp BugDriver.h CrashDebugger.cpp ExecutionDriver.cpp ExtractFunction.cpp ListReducer.h Miscompilation.cpp OptimizerDriver.cpp TestPasses.cpp bugpoint.cpp
Misha Brukman
brukman at cs.uiuc.edu
Thu Apr 21 17:00:05 PDT 2005
Changes in directory llvm/tools/bugpoint:
BugDriver.cpp updated: 1.41 -> 1.42
BugDriver.h updated: 1.38 -> 1.39
CrashDebugger.cpp updated: 1.41 -> 1.42
ExecutionDriver.cpp updated: 1.53 -> 1.54
ExtractFunction.cpp updated: 1.43 -> 1.44
ListReducer.h updated: 1.12 -> 1.13
Miscompilation.cpp updated: 1.62 -> 1.63
OptimizerDriver.cpp updated: 1.29 -> 1.30
TestPasses.cpp updated: 1.9 -> 1.10
bugpoint.cpp updated: 1.23 -> 1.24
---
Log message:
Remove trailing whitespace
---
Diffs of the changes: (+71 -71)
BugDriver.cpp | 6 +++---
BugDriver.h | 8 ++++----
CrashDebugger.cpp | 40 ++++++++++++++++++++--------------------
ExecutionDriver.cpp | 10 +++++-----
ExtractFunction.cpp | 10 +++++-----
ListReducer.h | 8 ++++----
Miscompilation.cpp | 46 +++++++++++++++++++++++-----------------------
OptimizerDriver.cpp | 6 +++---
TestPasses.cpp | 4 ++--
bugpoint.cpp | 4 ++--
10 files changed, 71 insertions(+), 71 deletions(-)
Index: llvm/tools/bugpoint/BugDriver.cpp
diff -u llvm/tools/bugpoint/BugDriver.cpp:1.41 llvm/tools/bugpoint/BugDriver.cpp:1.42
--- llvm/tools/bugpoint/BugDriver.cpp:1.41 Mon Dec 20 13:16:12 2004
+++ llvm/tools/bugpoint/BugDriver.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- BugDriver.cpp - Top-Level BugPoint class implementation ------------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This class contains all of the shared state and information that is used by
@@ -35,7 +35,7 @@
// otherwise the raw input run through an interpreter is used as the reference
// source.
//
- cl::opt<std::string>
+ cl::opt<std::string>
OutputFile("output", cl::desc("Specify a reference program output "
"(for miscompilation detection)"));
}
Index: llvm/tools/bugpoint/BugDriver.h
diff -u llvm/tools/bugpoint/BugDriver.h:1.38 llvm/tools/bugpoint/BugDriver.h:1.39
--- llvm/tools/bugpoint/BugDriver.h:1.38 Tue May 11 16:54:12 2004
+++ llvm/tools/bugpoint/BugDriver.h Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- BugDriver.h - Top-Level BugPoint class -------------------*- C++ -*-===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This class contains all of the shared state and information that is used by
@@ -76,7 +76,7 @@
/// reasonable, and figure out exactly which pass is crashing.
///
bool debugOptimizerCrash();
-
+
/// debugCodeGeneratorCrash - This method is called when the code generator
/// crashes on an input. It attempts to reduce the input as much as possible
/// while still causing the code generator to crash.
@@ -139,7 +139,7 @@
void switchToInterpreter(AbstractInterpreter *AI) {
Interpreter = AI;
}
-
+
/// setNewProgram - If we reduce or update the program somehow, call this
/// method to update bugdriver with it. This deletes the old module and sets
/// the specified one as the current program.
Index: llvm/tools/bugpoint/CrashDebugger.cpp
diff -u llvm/tools/bugpoint/CrashDebugger.cpp:1.41 llvm/tools/bugpoint/CrashDebugger.cpp:1.42
--- llvm/tools/bugpoint/CrashDebugger.cpp:1.41 Tue Mar 15 09:48:06 2005
+++ llvm/tools/bugpoint/CrashDebugger.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- CrashDebugger.cpp - Debug compilation crashes ----------------------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This file defines the bugpoint internals that narrow down compilation crashes
@@ -36,7 +36,7 @@
BugDriver &BD;
public:
ReducePassList(BugDriver &bd) : BD(bd) {}
-
+
// doTest - Return true iff running the "removed" passes succeeds, and
// running the "Kept" passes fail when run on the output of the "removed"
// passes. If we return true, we update the current module of bugpoint.
@@ -72,7 +72,7 @@
std::cout << "Checking to see if these passes crash: "
<< getPassesString(Suffix) << ": ";
-
+
if (BD.runPasses(Suffix)) {
delete OrigProgram; // The suffix crashes alone...
return KeepSuffix;
@@ -94,7 +94,7 @@
ReduceCrashingFunctions(BugDriver &bd,
bool (*testFn)(BugDriver &, Module *))
: BD(bd), TestFn(testFn) {}
-
+
virtual TestResult doTest(std::vector<Function*> &Prefix,
std::vector<Function*> &Kept) {
if (!Kept.empty() && TestFuncs(Kept))
@@ -103,7 +103,7 @@
return KeepPrefix;
return NoFailure;
}
-
+
bool TestFuncs(std::vector<Function*> &Prefix);
};
}
@@ -111,11 +111,11 @@
bool ReduceCrashingFunctions::TestFuncs(std::vector<Function*> &Funcs) {
// Clone the program to try hacking it apart...
Module *M = CloneModule(BD.getProgram());
-
+
// Convert list to set for fast lookup...
std::set<Function*> Functions;
for (unsigned i = 0, e = Funcs.size(); i != e; ++i) {
- Function *CMF = M->getFunction(Funcs[i]->getName(),
+ Function *CMF = M->getFunction(Funcs[i]->getName(),
Funcs[i]->getFunctionType());
assert(CMF && "Function not in module?!");
Functions.insert(CMF);
@@ -157,7 +157,7 @@
public:
ReduceCrashingBlocks(BugDriver &bd, bool (*testFn)(BugDriver &, Module *))
: BD(bd), TestFn(testFn) {}
-
+
virtual TestResult doTest(std::vector<const BasicBlock*> &Prefix,
std::vector<const BasicBlock*> &Kept) {
if (!Kept.empty() && TestBlocks(Kept))
@@ -166,7 +166,7 @@
return KeepPrefix;
return NoFailure;
}
-
+
bool TestBlocks(std::vector<const BasicBlock*> &Prefix);
};
}
@@ -174,7 +174,7 @@
bool ReduceCrashingBlocks::TestBlocks(std::vector<const BasicBlock*> &BBs) {
// Clone the program to try hacking it apart...
Module *M = CloneModule(BD.getProgram());
-
+
// Convert list to set for fast lookup...
std::set<BasicBlock*> Blocks;
for (unsigned i = 0, e = BBs.size(); i != e; ++i) {
@@ -214,7 +214,7 @@
// Delete the old terminator instruction...
BB->getInstList().pop_back();
-
+
// Add a new return instruction of the appropriate type...
const Type *RetTy = BB->getParent()->getReturnType();
new ReturnInst(RetTy == Type::VoidTy ? 0 :
@@ -274,7 +274,7 @@
I->setLinkage(GlobalValue::ExternalLinkage);
DeletedInit = true;
}
-
+
if (!DeletedInit) {
delete M; // No change made...
} else {
@@ -290,7 +290,7 @@
}
}
}
-
+
// Now try to reduce the number of functions in the module to something small.
std::vector<Function*> Functions;
for (Module::iterator I = BD.getProgram()->begin(),
@@ -343,7 +343,7 @@
//
unsigned InstructionsToSkipBeforeDeleting = 0;
TryAgain:
-
+
// Loop over all of the (non-terminator) instructions remaining in the
// function, attempting to delete them.
unsigned CurInstructionNum = 0;
@@ -359,7 +359,7 @@
} else {
std::cout << "Checking instruction '" << I->getName() << "': ";
Module *M = BD.deleteInstructionFromProgram(I, Simplification);
-
+
// Find out if the pass still crashes on this pass...
if (TestFn(BD, M)) {
// Yup, it does, we delete the old module, and continue trying
@@ -369,7 +369,7 @@
InstructionsToSkipBeforeDeleting = CurInstructionNum;
goto TryAgain; // I wish I had a multi-level break here!
}
-
+
// This pass didn't crash without this instruction, try the next
// one.
delete M;
@@ -379,14 +379,14 @@
InstructionsToSkipBeforeDeleting = 0;
goto TryAgain;
}
-
+
} while (Simplification);
// Try to clean up the testcase by running funcresolve and globaldce...
std::cout << "\n*** Attempting to perform final cleanups: ";
Module *M = CloneModule(BD.getProgram());
M = BD.performFinalCleanups(M, true);
-
+
// Find out if the pass still crashes on the cleaned up program...
if (TestFn(BD, M)) {
BD.setNewProgram(M); // Yup, it does, keep the reduced version...
@@ -398,7 +398,7 @@
if (AnyReduction)
BD.EmitProgressBytecode("reduced-simplified");
- return false;
+ return false;
}
static bool TestForOptimizerCrash(BugDriver &BD, Module *M) {
Index: llvm/tools/bugpoint/ExecutionDriver.cpp
diff -u llvm/tools/bugpoint/ExecutionDriver.cpp:1.53 llvm/tools/bugpoint/ExecutionDriver.cpp:1.54
--- llvm/tools/bugpoint/ExecutionDriver.cpp:1.53 Sat Jan 22 21:45:26 2005
+++ llvm/tools/bugpoint/ExecutionDriver.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- ExecutionDriver.cpp - Allow execution of LLVM program --------------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This file contains code used to execute the program utilizing one of the
@@ -276,7 +276,7 @@
#endif
std::string SharedObjectFile;
- if (gcc->MakeSharedObject(OutputCFile.toString(), GCC::CFile,
+ if (gcc->MakeSharedObject(OutputCFile.toString(), GCC::CFile,
SharedObjectFile))
exit(1);
@@ -303,7 +303,7 @@
// If we're checking the program exit code, assume anything nonzero is bad.
if (CheckProgramExitCode && ProgramExitedNonzero) {
Output.destroyFile();
- if (RemoveBytecode)
+ if (RemoveBytecode)
sys::Path(BytecodeFile).destroyFile();
return true;
}
@@ -319,7 +319,7 @@
}
FilesDifferent = true;
}
-
+
// Remove the generated output.
Output.destroyFile();
Index: llvm/tools/bugpoint/ExtractFunction.cpp
diff -u llvm/tools/bugpoint/ExtractFunction.cpp:1.43 llvm/tools/bugpoint/ExtractFunction.cpp:1.44
--- llvm/tools/bugpoint/ExtractFunction.cpp:1.43 Tue Mar 15 09:48:06 2005
+++ llvm/tools/bugpoint/ExtractFunction.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- ExtractFunction.cpp - Extract a function from Program --------------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This file implements several methods that are used to extract functions,
@@ -104,7 +104,7 @@
// Make all functions external, so GlobalDCE doesn't delete them...
for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I)
I->setLinkage(GlobalValue::ExternalLinkage);
-
+
std::vector<const PassInfo*> CleanupPasses;
CleanupPasses.push_back(getPI(createFunctionResolvingPass()));
CleanupPasses.push_back(getPI(createGlobalDCEPass()));
@@ -155,7 +155,7 @@
for (unsigned i = 0, e = M->size(); i != e; ++i)
++MI;
}
-
+
return NewM;
}
@@ -251,7 +251,7 @@
for (unsigned i = 0, e = BlocksToExtract.size(); i != e; ++i)
ExtractBasicBlock(BlocksToExtract[i]);
-
+
return !BlocksToExtract.empty();
}
Index: llvm/tools/bugpoint/ListReducer.h
diff -u llvm/tools/bugpoint/ListReducer.h:1.12 llvm/tools/bugpoint/ListReducer.h:1.13
--- llvm/tools/bugpoint/ListReducer.h:1.12 Thu Nov 18 13:42:50 2004
+++ llvm/tools/bugpoint/ListReducer.h Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- ListReducer.h - Trim down list while retaining property --*- C++ -*-===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This class is to be used as a base class for operations that want to zero in
@@ -48,7 +48,7 @@
case KeepPrefix:
if (TheList.size() == 1) // we are done, it's the base case and it fails
return true;
- else
+ else
break; // there's definitely an error, but we need to narrow it down
case KeepSuffix:
@@ -107,7 +107,7 @@
Changed = true;
}
}
- // This can take a long time if left uncontrolled. For now, don't
+ // This can take a long time if left uncontrolled. For now, don't
// iterate.
break;
}
Index: llvm/tools/bugpoint/Miscompilation.cpp
diff -u llvm/tools/bugpoint/Miscompilation.cpp:1.62 llvm/tools/bugpoint/Miscompilation.cpp:1.63
--- llvm/tools/bugpoint/Miscompilation.cpp:1.62 Tue Mar 15 09:48:06 2005
+++ llvm/tools/bugpoint/Miscompilation.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- Miscompilation.cpp - Debug program miscompilations -----------------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This file implements optimizer and code generation miscompilation debugging
@@ -37,7 +37,7 @@
BugDriver &BD;
public:
ReduceMiscompilingPasses(BugDriver &bd) : BD(bd) {}
-
+
virtual TestResult doTest(std::vector<const PassInfo*> &Prefix,
std::vector<const PassInfo*> &Suffix);
};
@@ -56,7 +56,7 @@
std::string BytecodeResult;
if (BD.runPasses(Suffix, BytecodeResult, false/*delete*/, true/*quiet*/)) {
- std::cerr << " Error running this sequence of passes"
+ std::cerr << " Error running this sequence of passes"
<< " on the input program!\n";
BD.setPassesToRun(Suffix);
BD.EmitProgressBytecode("pass-error", false);
@@ -89,7 +89,7 @@
// prefix passes, then discard the prefix passes.
//
if (BD.runPasses(Prefix, BytecodeResult, false/*delete*/, true/*quiet*/)) {
- std::cerr << " Error running this sequence of passes"
+ std::cerr << " Error running this sequence of passes"
<< " on the input program!\n";
BD.setPassesToRun(Prefix);
BD.EmitProgressBytecode("pass-error", false);
@@ -118,14 +118,14 @@
// Don't check if there are no passes in the suffix.
if (Suffix.empty())
return NoFailure;
-
+
std::cout << "Checking to see if '" << getPassesString(Suffix)
<< "' passes compile correctly after the '"
<< getPassesString(Prefix) << "' passes: ";
Module *OriginalInput = BD.swapProgramIn(PrefixOutput);
if (BD.runPasses(Suffix, BytecodeResult, false/*delete*/, true/*quiet*/)) {
- std::cerr << " Error running this sequence of passes"
+ std::cerr << " Error running this sequence of passes"
<< " on the input program!\n";
BD.setPassesToRun(Suffix);
BD.EmitProgressBytecode("pass-error", false);
@@ -153,7 +153,7 @@
ReduceMiscompilingFunctions(BugDriver &bd,
bool (*F)(BugDriver &, Module *, Module *))
: BD(bd), TestFn(F) {}
-
+
virtual TestResult doTest(std::vector<Function*> &Prefix,
std::vector<Function*> &Suffix) {
if (!Suffix.empty() && TestFuncs(Suffix))
@@ -162,7 +162,7 @@
return KeepPrefix;
return NoFailure;
}
-
+
bool TestFuncs(const std::vector<Function*> &Prefix);
};
}
@@ -280,7 +280,7 @@
return MadeChange;
}
BD.switchToInterpreter(AI);
-
+
std::cout << " Testing after loop extraction:\n";
// Clone modules, the tester function will free them.
Module *TOLEBackup = CloneModule(ToOptimizeLoopExtracted);
@@ -343,7 +343,7 @@
bool (*F)(BugDriver &, Module *, Module *),
const std::vector<Function*> &Fns)
: BD(bd), TestFn(F), FunctionsBeingTested(Fns) {}
-
+
virtual TestResult doTest(std::vector<BasicBlock*> &Prefix,
std::vector<BasicBlock*> &Suffix) {
if (!Suffix.empty() && TestFuncs(Suffix))
@@ -352,7 +352,7 @@
return KeepPrefix;
return NoFailure;
}
-
+
bool TestFuncs(const std::vector<BasicBlock*> &Prefix);
};
}
@@ -506,7 +506,7 @@
// Do the reduction...
ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions);
-
+
std::cout << "\n*** The following function"
<< (MiscompiledFunctions.size() == 1 ? " is" : "s are")
<< " being miscompiled: ";
@@ -525,7 +525,7 @@
// Do the reduction...
ReduceMiscompilingFunctions(BD, TestFn).reduceList(MiscompiledFunctions);
-
+
std::cout << "\n*** The following function"
<< (MiscompiledFunctions.size() == 1 ? " is" : "s are")
<< " being miscompiled: ";
@@ -586,7 +586,7 @@
ToNotOptimize = swapProgramIn(ToNotOptimize);
EmitProgressBytecode("tonotoptimize", true);
setNewProgram(ToNotOptimize); // Delete hacked module.
-
+
std::cout << " Portion that is input to optimizer: ";
ToOptimize = swapProgramIn(ToOptimize);
EmitProgressBytecode("tooptimize");
@@ -614,12 +614,12 @@
// Rename it
oldMain->setName("llvm_bugpoint_old_main");
// Create a NEW `main' function with same type in the test module.
- Function *newMain = new Function(oldMain->getFunctionType(),
+ Function *newMain = new Function(oldMain->getFunctionType(),
GlobalValue::ExternalLinkage,
"main", Test);
// Create an `oldmain' prototype in the test module, which will
// corresponds to the real main function in the same module.
- Function *oldMainProto = new Function(oldMain->getFunctionType(),
+ Function *oldMainProto = new Function(oldMain->getFunctionType(),
GlobalValue::ExternalLinkage,
oldMain->getName(), Test);
// Set up and remember the argument list for the main function.
@@ -634,7 +634,7 @@
// Call the old main function and return its result
BasicBlock *BB = new BasicBlock("entry", newMain);
CallInst *call = new CallInst(oldMainProto, args, "", BB);
-
+
// If the type of old function wasn't void, return value of call
new ReturnInst(call, BB);
}
@@ -643,14 +643,14 @@
// module cannot directly reference any functions defined in the test
// module. Instead, we use a JIT API call to dynamically resolve the
// symbol.
-
+
// Add the resolver to the Safe module.
// Prototype: void *getPointerToNamedFunction(const char* Name)
- Function *resolverFunc =
+ Function *resolverFunc =
Safe->getOrInsertFunction("getPointerToNamedFunction",
PointerType::get(Type::SByteTy),
PointerType::get(Type::SByteTy), 0);
-
+
// Use the function we just added to get addresses of functions we need.
for (Module::iterator F = Safe->begin(), E = Safe->end(); F != E; ++F) {
if (F->isExternal() && !F->use_empty() && &*F != resolverFunc &&
@@ -663,7 +663,7 @@
Constant *InitArray = ConstantArray::get(F->getName());
GlobalVariable *funcName =
new GlobalVariable(InitArray->getType(), true /*isConstant*/,
- GlobalValue::InternalLinkage, InitArray,
+ GlobalValue::InternalLinkage, InitArray,
F->getName() + "_name", Safe);
// 2. Use `GetElementPtr *funcName, 0, 0' to convert the string to an
@@ -690,7 +690,7 @@
// Resolve the call to function F via the JIT API:
//
// call resolver(GetElementPtr...)
- CallInst *resolve = new CallInst(resolverFunc, ResolverArgs,
+ CallInst *resolve = new CallInst(resolverFunc, ResolverArgs,
"resolver");
Header->getInstList().push_back(resolve);
// cast the result from the resolver to correctly-typed function
Index: llvm/tools/bugpoint/OptimizerDriver.cpp
diff -u llvm/tools/bugpoint/OptimizerDriver.cpp:1.29 llvm/tools/bugpoint/OptimizerDriver.cpp:1.30
--- llvm/tools/bugpoint/OptimizerDriver.cpp:1.29 Tue Feb 15 23:05:31 2005
+++ llvm/tools/bugpoint/OptimizerDriver.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- OptimizerDriver.cpp - Allow BugPoint to run passes safely ----------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This file defines an interface that allows bugpoint to run various passes
@@ -195,7 +195,7 @@
std::string BytecodeResult;
if (runPasses(Passes, BytecodeResult, false/*delete*/, true/*quiet*/)) {
if (AutoDebugCrashes) {
- std::cerr << " Error running this sequence of passes"
+ std::cerr << " Error running this sequence of passes"
<< " on the input program!\n";
delete OldProgram;
EmitProgressBytecode("pass-error", false);
Index: llvm/tools/bugpoint/TestPasses.cpp
diff -u llvm/tools/bugpoint/TestPasses.cpp:1.9 llvm/tools/bugpoint/TestPasses.cpp:1.10
--- llvm/tools/bugpoint/TestPasses.cpp:1.9 Thu Mar 17 09:38:16 2005
+++ llvm/tools/bugpoint/TestPasses.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- TestPasses.cpp - "buggy" passes used to test bugpoint --------------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This file contains "buggy" passes that are used to test bugpoint, to check
Index: llvm/tools/bugpoint/bugpoint.cpp
diff -u llvm/tools/bugpoint/bugpoint.cpp:1.23 llvm/tools/bugpoint/bugpoint.cpp:1.24
--- llvm/tools/bugpoint/bugpoint.cpp:1.23 Wed Dec 29 23:36:07 2004
+++ llvm/tools/bugpoint/bugpoint.cpp Thu Apr 21 18:59:23 2005
@@ -1,10 +1,10 @@
//===- bugpoint.cpp - The LLVM Bugpoint utility ---------------------------===//
-//
+//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
+//
//===----------------------------------------------------------------------===//
//
// This program is an automated compiler debugger tool. It is used to narrow
More information about the llvm-commits
mailing list