mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Split the CleanupGCCOutput pass into two passes, and add real life actual
documentation on when they do. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2222 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0e52e3e221
commit
b59d8199e0
@ -1,5 +1,16 @@
|
|||||||
//===- llvm/Transforms/CleanupGCCOutput.h - Cleanup GCC Output ---*- C++ -*--=//
|
//===- llvm/Transforms/CleanupGCCOutput.h - Cleanup GCC Output ---*- C++ -*--=//
|
||||||
//
|
//
|
||||||
|
// These passes are used to cleanup the output of GCC. GCC's output is
|
||||||
|
// unneccessarily gross for a couple of reasons. This pass does the following
|
||||||
|
// things to try to clean it up:
|
||||||
|
//
|
||||||
|
// * Eliminate names for GCC types that we know can't be needed by the user.
|
||||||
|
// * Eliminate names for types that are unused in the entire translation unit
|
||||||
|
// * Fix various problems that we might have in PHI nodes and casts
|
||||||
|
// * Link uses of 'void %foo(...)' to 'void %foo(sometypes)'
|
||||||
|
//
|
||||||
|
// Note: This code produces dead declarations, it is a good idea to run DCE
|
||||||
|
// after this pass.
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
@ -7,6 +18,22 @@
|
|||||||
#define LLVM_TRANSFORMS_CLEANUPGCCOUTPUT_H
|
#define LLVM_TRANSFORMS_CLEANUPGCCOUTPUT_H
|
||||||
|
|
||||||
class Pass;
|
class Pass;
|
||||||
|
|
||||||
|
// CleanupGCCOutputPass - Perform all of the function body transformations.
|
||||||
|
//
|
||||||
Pass *createCleanupGCCOutputPass();
|
Pass *createCleanupGCCOutputPass();
|
||||||
|
|
||||||
|
|
||||||
|
// FunctionResolvingPass - Go over the functions that are in the module and
|
||||||
|
// look for functions that have the same name. More often than not, there will
|
||||||
|
// be things like:
|
||||||
|
// void "foo"(...)
|
||||||
|
// void "foo"(int, int)
|
||||||
|
// because of the way things are declared in C. If this is the case, patch
|
||||||
|
// things up.
|
||||||
|
//
|
||||||
|
// This is an interprocedural pass.
|
||||||
|
//
|
||||||
|
Pass *createFunctionResolvingPass();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user