llvm-6502/lib
Oliver Stannard 7c40b1a7bc Fix assertion failure in global-merge with unused ConstantExpr
The global-merge pass was crashing because it assumes that all ConstantExprs
(reached via the global variables that they use) have at least one user.

I haven't worked out a way to test this, as an unused ConstantExpr cannot be
represented by serialised IR, and global-merge can only be run in llc, which
does not run any passes which can make a ConstantExpr dead.

This (reduced to the point of silliness) C code triggers this bug when compiled
for arm-none-eabi at -O1:

  static a = 7;
  static volatile b[10] = {&a};

  c;
  main() {
    c = 0;
    for (; c < 10;)
      printf(b[c]);
  }

Differential Revision: http://reviews.llvm.org/D10314



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239308 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-08 16:55:31 +00:00
..
Analysis Minor refactoring of GEP handling in isDereferenceablePointer 2015-06-08 11:58:13 +00:00
AsmParser
Bitcode
CodeGen Fix assertion failure in global-merge with unused ConstantExpr 2015-06-08 16:55:31 +00:00
DebugInfo
ExecutionEngine [Mips64][mcjit] Add R_MIPS_PC32 relocation 2015-06-08 14:10:23 +00:00
Fuzzer
IR
IRReader
LineEditor
Linker
LTO
MC
Object Fix Windows build. 2015-06-08 02:43:32 +00:00
Option
Passes
ProfileData
Support
TableGen
Target [Hexagon] Adding functionality for searching for compound instruction pairs. Compound instructions reduce slot resource requirements freeing those packet slots up for more instructions. 2015-06-08 16:34:47 +00:00
Transforms [LoopVectorize] Teach Loop Vectorizor about interleaved memory accesses. 2015-06-08 06:39:56 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile