Go to file
Davide Italiano 824d695231 [SCCP] Teach the pass about `mul %x 0` even if %x is overdefined.
The motivating example is:

extern int patatino;
int goo() {
    int x = 0;
    for (int i = 0; i < 1000000; ++i) {
        x *= patatino;
    }
    return x;
}

Currently SCCP will not realize that this function returns always zero,
therefore will try to unroll and vectorize the loop at -O3 producing an
awful lot of (useless) code. With this change, it will just produce:

0000000000000000 <g>:
   xor    %eax,%eax
   retq

llvm-svn: 289175
2016-12-09 03:08:42 +00:00
clang [CrashReproducer] Rewrite relative include paths 2016-12-09 02:22:47 +00:00
clang-tools-extra [change-namespace] always add a '::' prefix when a symbol reference needs to be fully-qualified. 2016-12-07 20:08:02 +00:00
compiler-rt [sanitizer] Add workaround for empty strings 2016-12-08 22:26:03 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Fix build since r286752. 2016-11-14 16:06:33 +00:00
libcxx Fix PR27374 - Remove the implicit reduced-arity-extension in tuple. 2016-12-08 23:57:08 +00:00
libcxxabi [libc++abi] Add _LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS 2016-12-05 19:42:11 +00:00
libunwind EHABI: mark some functions as exported 2016-11-17 23:53:35 +00:00
lld COFF: Use make() in SymbolTable and Writer. 2016-12-09 02:13:12 +00:00
lldb Calling SBDebugger::CeeateTarget being called on multiple threads was crashing LLDB. 2016-12-09 01:21:14 +00:00
llgo [llgo] Remove support for LLVM attributes 2016-12-06 19:22:04 +00:00
llvm [SCCP] Teach the pass about `mul %x 0` even if %x is overdefined. 2016-12-09 03:08:42 +00:00
openmp Support of mips & mips64 for openmprtl 2016-12-08 09:22:24 +00:00
parallel-libs [Acxxel] Remove setActiveDeviceForThread 2016-10-28 00:54:02 +00:00
polly Add unittests for foreach(Elt|Piece). NFC. 2016-12-07 17:48:02 +00:00