| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 106444
|
|
|
|
|
|
| |
It works in simple cases, but it isn't a general solution.
llvm-svn: 103499
|
|
|
|
| |
llvm-svn: 103493
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This includes a patch by Roman Divacky to fix the initial crash.
Move the actual addition of passes from *PassManager::add to
*PassManager::addImpl. That way, when adding printer passes we won't
recurse infinitely.
Finally, check to make sure that we are actually adding a FunctionPass
to a FunctionPassManager before doing a print before or after it.
Immutable passes are strange in this way because they aren't
FunctionPasses yet they can be and are added to the FunctionPassManager.
llvm-svn: 103425
|
|
|
|
|
|
| |
readability.
llvm-svn: 100756
|
|
|
|
| |
llvm-svn: 100709
|
|
|
|
| |
llvm-svn: 100702
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
source addition. Apparently the buildbots were wrong about failures.
---
Add some switches helpful for debugging:
-print-before=<Pass Name>
Dump IR before running pass <Pass Name>.
-print-before-all
Dump IR before running each pass.
-print-after-all
Dump IR after running each pass.
These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.
To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.
llvm-svn: 100249
|
|
|
|
|
|
| |
are run during codegen.
llvm-svn: 100207
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<string> include. For some reason the buildbot choked on this while my
builds did not. It's probably due to a difference in system headers.
---
Add some switches helpful for debugging:
-print-before=<Pass Name>
Dump IR before running pass <Pass Name>.
-print-before-all
Dump IR before running each pass.
-print-after-all
Dump IR after running each pass.
These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.
To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.
llvm-svn: 100204
|
|
|
|
| |
llvm-svn: 100146
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-print-before=<Pass Name>
Dump IR before running pass <Pass Name>.
-print-before-all
Dump IR before running each pass.
-print-after-all
Dump IR after running each pass.
These are helpful when tracking down a miscompilation. It is easy to
get IR dumps and do diffs on them, etc.
To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.
llvm-svn: 100143
|
|
|
|
|
|
| |
timers by pointer instead of by-value.
llvm-svn: 99871
|
|
|
|
| |
llvm-svn: 99870
|
|
|
|
| |
llvm-svn: 99862
|
|
|
|
| |
llvm-svn: 97608
|
|
|
|
| |
llvm-svn: 97446
|
|
|
|
|
|
| |
fixes a crash using FPM on a Function that isn't owned by a Module.
llvm-svn: 96273
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Modules and ModuleProviders. Because the "ModuleProvider" simply materializes
GlobalValues now, and doesn't provide modules, it's renamed to
"GVMaterializer". Code that used to need a ModuleProvider to materialize
Functions can now materialize the Functions directly. Functions no longer use a
magic linkage to record that they're materializable; they simply ask the
GVMaterializer.
Because the C ABI must never change, we can't remove LLVMModuleProviderRef or
the functions that refer to it. Instead, because Module now exposes the same
functionality ModuleProvider used to, we store a Module* in any
LLVMModuleProviderRef and translate in the wrapper methods. The bindings to
other languages still use the ModuleProvider concept. It would probably be
worth some time to update them to follow the C++ more closely, but I don't
intend to do it.
Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735.
llvm-svn: 94686
|
|
|
|
| |
llvm-svn: 94160
|
|
|
|
| |
llvm-svn: 94156
|
|
|
|
| |
llvm-svn: 94155
|
|
|
|
| |
llvm-svn: 94154
|
|
|
|
|
|
|
|
| |
boolean values were distinguishable from integers. The attached patch introduces "typedef int LLVMBool;", and uses LLVMBool instead of int throughout the C API, wherever a boolean value is called for."
Patch by James Y Knight!
llvm-svn: 93079
|
|
|
|
| |
llvm-svn: 92660
|
|
|
|
| |
llvm-svn: 92160
|
|
|
|
| |
llvm-svn: 90855
|
|
|
|
| |
llvm-svn: 90553
|
|
|
|
|
|
|
| |
out of its run function and into its doInitialization method, so
that it does the dump once instead of once per function.
llvm-svn: 89660
|
|
|
|
| |
llvm-svn: 86251
|
|
|
|
|
|
|
| |
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042
|
|
|
|
|
|
|
|
|
|
|
|
| |
the PassManager code into a regular verifyAnalysis method.
Also, reorganize loop verification. Make the LoopPass infrastructure
call verifyLoop as needed instead of having LoopInfo::verifyAnalysis
check every loop in the function after each looop pass. Add a new
command-line argument, -verify-loop-info, to enable the expensive
full checking.
llvm-svn: 82952
|
|
|
|
|
|
|
|
| |
code that stops the timer doesn't have to search to find the timer
object before it stops the timer. This avoids a lock acquisition
and a few other things done with the timer running.
llvm-svn: 82949
|
|
|
|
|
|
| |
tidy it up a little.
llvm-svn: 82944
|
|
|
|
|
|
| |
are in the SCC for each execution of a CGSCC pass.
llvm-svn: 81838
|
|
|
|
| |
llvm-svn: 81836
|
|
|
|
| |
llvm-svn: 79852
|
|
|
|
| |
llvm-svn: 78363
|
|
|
|
| |
llvm-svn: 77145
|
|
|
|
|
|
|
|
|
| |
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").
llvm-svn: 75640
|
|
|
|
|
|
|
|
|
| |
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.
llvm-svn: 75379
|
|
|
|
|
|
|
| |
cerr+abort -> llvm_report_error
assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included)
llvm-svn: 75018
|
|
|
|
| |
llvm-svn: 74931
|
|
|
|
|
|
| |
This fixes a bug that caused -debug-pass=Details to abort.
llvm-svn: 74654
|
|
|
|
| |
llvm-svn: 74455
|
|
|
|
|
|
|
|
|
|
| |
on-the-fly passes as well.
Also don't call finalizers for LoopPass if initialization was not called.
Add a unittest that tests that these methods are called, in the proper
order, and the correct number of times.
llvm-svn: 74438
|
|
|
|
| |
llvm-svn: 73722
|
|
|
|
| |
llvm-svn: 73707
|
|
|
|
| |
llvm-svn: 73639
|
|
|
|
| |
llvm-svn: 72253
|