llvm/test
Duncan Sands bbc7016c60 Transform code like this
%V = mul i64 %N, 4
 %t = getelementptr i8* bitcast (i32* %arr to i8*), i32 %V
into
 %t1 = getelementptr i32* %arr, i32 %N
 %t = bitcast i32* %t1 to i8*
incorporating the multiplication into the getelementptr.
This happens all the time in dragonegg, for example for
  int foo(int *A, int N) {
    return A[N];
  }
because gcc turns this into byte pointer arithmetic before it hits the plugin:
  D.1590_2 = (long unsigned int) N_1(D);
  D.1591_3 = D.1590_2 * 4;
  D.1592_5 = A_4(D) + D.1591_3;
  D.1589_6 = *D.1592_5;
  return D.1589_6;
The D.1592_5 line is a POINTER_PLUS_EXPR, which is turned into a getelementptr
on a bitcast of A_4 to i8*, so this becomes exactly the kind of IR that the
transform fires on.

An analogous transform (with no testcases!) already existed for bitcasts of
arrays, so I rewrote it to share code with this one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166474 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-23 08:28:26 +00:00
..
Analysis dependence analysis 2012-10-11 07:32:34 +00:00
Archive Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed. 2012-02-16 06:28:33 +00:00
Assembler Don't crash if a .ll file contains a forward-reference that looks like a global 2012-10-11 00:38:25 +00:00
Bindings/Ocaml Move TargetData to DataLayout. 2012-10-08 16:39:34 +00:00
Bitcode Change encoding of instruction operands in bitcode binaries to be relative 2012-10-11 20:20:40 +00:00
BugPoint Mark bugpoint tests with XFAIL when building with LTO. <rdar://problem/12473675> 2012-10-18 22:03:31 +00:00
CodeGen implement setXX patterns 2012-10-23 01:35:48 +00:00
DebugInfo Make sure to generate the right kind of MDNode for enum forward declarations. 2012-10-05 01:49:14 +00:00
ExecutionEngine Some regression tests which are testing the old jit and are exercising functionality which is both known to be broken and not expected to be fixed in the old jit. To remove these from the regression test output, I've marked them XFAIL (for lit tests) and ifdef'd them out (unit tests). These modifications remove the last long-standing regression test failures from the buildbots (though updating the triple to reflect new ubuntu configuration has temporarily caused some new failures). Tested on x86-64 and ARM Linux. 2012-10-08 13:06:30 +00:00
Feature Add a testcase for the previous commit. 2012-10-22 18:16:55 +00:00
Instrumentation [asan] make sure asan erases old unused allocas after it created a new one. This became important after the recent move from ModulePass to FunctionPass because no cleanup is happening after asan pass any more. 2012-10-19 06:20:53 +00:00
Integer Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
Linker Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
MC Add support for annotated disassembly output for X86 and arm. 2012-10-22 22:31:46 +00:00
Object Fix SymbolRef::getAddress implementation for ELF. The 'value' field in symbol table entry should be treated differently for relocatable and relocated files. This patch fixes symbol addresses printed by llvm-nm for executables and shared objects. 2012-09-21 07:08:08 +00:00
Other Enable response files in all tools. Patch by Liu, Yaxun (Sam). I have simplified 2012-10-09 19:52:10 +00:00
Scripts This allows hello world to be compiled for Mips 64 direct object. 2012-06-27 22:48:25 +00:00
TableGen Re-work bit/bits value resolving in tblgen 2012-09-06 23:32:48 +00:00
Transforms Transform code like this 2012-10-23 08:28:26 +00:00
Unit tests: Rip out a bunch of now unused test code relating to use of llvm-gcc in LLVM tests. 2011-10-27 20:59:26 +00:00
Verifier Assert that dominates is not given a multiple edge. Finding out if we have 2012-08-17 18:21:28 +00:00
YAMLParser Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
CMakeLists.txt Add dependency on llvm-bcanalyzer from tests to the CMake build. 2012-10-15 21:11:46 +00:00
lit.cfg tests: Stop mangling '-vg' into the triple, we don't use this currently. 2012-10-19 20:11:56 +00:00
lit.site.cfg.in test: Add a lit config variable to check if LTO is enabled. 2012-10-18 20:43:11 +00:00
Makefile test: Add a lit config variable to check if LTO is enabled. 2012-10-18 20:43:11 +00:00
Makefile.tests
TestRunner.sh