llvm-6502/lib/Transforms
Zhou Sheng 702aa2ee19 The patch is to improve the memory footprint of pass GlobalOpt.
Also check in a case to repeat the issue, on which 'opt -globalopt' consumes 1.6GB memory.
The big memory footprint cause is that current GlobalOpt one by one hoists and stores the leaf element constant into the global array, in each iteration, it recreates the global array initializer constant and leave the old initializer alone. This may result in many obsolete constants left.
For example:  we have global array @rom = global [16 x i32] zeroinitializer
After the first element value is hoisted and installed:   @rom = global [16 x i32] [ 1, 0, 0, ... ]
After the second element value is installed:  @rom = global [16 x 32] [ 1, 2, 0, 0, ... ]        // here the previous initializer is obsolete
...
When the transform is done, we have 15 obsolete initializers left useless.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169079 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-01 04:38:53 +00:00
..
Hello
InstCombine reversed the logic of the log2 detection routine to reduce the number of nested ifs 2012-11-30 22:47:15 +00:00
Instrumentation [asan] simplify the code around doesNotReturn call. It now magically works. 2012-11-30 11:08:59 +00:00
IPO The patch is to improve the memory footprint of pass GlobalOpt. 2012-12-01 04:38:53 +00:00
Scalar Replace r168930 with a more reasonable patch. 2012-11-30 22:08:55 +00:00
Utils Fix non-determinism introduced in r168970 and pointed out by Duncan. 2012-11-30 09:34:29 +00:00
Vectorize minor cleanups 2012-11-30 22:37:11 +00:00
CMakeLists.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
LLVMBuild.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
Makefile Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00