aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2014-02-28Use range metadata instead of introducing selects.Dan Gohman
When GlobalOpt has determined that a GlobalVariable only ever has two values, it would convert the GlobalVariable to a boolean, and introduce SelectInsts at every load, to choose between the two possible values. These SelectInsts introduce overhead and other unpleasantness. This patch makes GlobalOpt just add range metadata to loads from such GlobalVariables instead. This enables the same main optimization (as seen in test/Transforms/GlobalOpt/integer-bool.ll), without introducing selects. The main downside is that it doesn't get the memory savings of shrinking such GlobalVariables, but this is expected to be negligible.
2014-02-28Move ExpandI64 into lib/Target/JSBackend.Dan Gohman
2014-02-28Use more LLVM-idiomatic error reporting.Dan Gohman
2014-02-28Implement llvm.flt.rounds and disable the createRewriteLLVMIntrinsicsPass pass.Dan Gohman
2014-02-26Merge pull request #23 from sunfishcode/incomingAlon Zakai
Incoming
2014-02-26NoExitRuntimeAlon Zakai
2014-02-25Disable the RewritePNaClLibraryCalls pass, which isn't needed for Emscripten.Dan Gohman
2014-02-25Re-introduce ConstantExpr expansion for constants containing illegal types.Dan Gohman
2014-02-25Support GEP and ConstantExprs directly in the JSBackend.Dan Gohman
This patch also lays the groundwork for the single-use instruction trick to reduce the number of temporary variables.
2014-02-25workaround for nativeclient issue 3798, wrong alignment on copy of a byval ↵Alon Zakai
struct argument
2014-02-20fix attribute copying in function recreation code in ExpandI64 passAlon Zakai
2014-02-14typo fixAlon Zakai
2014-02-14fix ashr when high bits are exactly 0Alon Zakai
2014-02-14Preserve alignment information when promoting integer loads and stores.Dan Gohman
2014-02-14Preserve alignment information when splitting loads and stores.Dan Gohman
2014-02-14Disable two PNaCl passes which the JSBackend no longer needs.Dan Gohman
2014-02-13erase more carefully in setjmp loweringAlon Zakai
2014-02-13Merge pull request #13 from sunfishcode/incomingAlon Zakai
Emscripten doesn't need to legalize pointers.
2014-02-13don't do 32-bit shifts on 32-bit values, as it is undefined behaviorAlon Zakai
2014-02-13Emscripten doesn't need to legalize pointers.Dan Gohman
2014-02-13handle ashr on >64 bitsAlon Zakai
2014-02-13Don't leave behind unreachable blocks with illegal instructions.Dan Gohman
2014-02-12Revamp ExpandI64.Dan Gohman
By using a reverse-postorder traversal of the basic blocks, we can perform this transform in a single pass. This eliminates the need for tricky coordination between the passes.
2014-02-12Generalize PromoteIntegers to handle arbitrary bit widths.Dan Gohman
2014-02-12Disable an unnecessary optimization pass.Dan Gohman
2014-02-12Use more LLVM-idiomatic debug and error facilities.Dan Gohman
2014-02-12optimize reg/mem stuff around setjmp loweringAlon Zakai
2014-02-12do reg2mem/mem2reg around the setjmp pass, to ensure our cfg changes do not ↵Alon Zakai
break module validation through altering dominances
2014-02-05fix a bug in LowerEmSetjmp, and improve error reportingAlon Zakai
2014-02-03allow only one of setjmp|longjmp to be presentAlon Zakai
2014-02-02support llvm.usedAlon Zakai
2014-02-02exceptions whitelist option, for emscripten EXCEPTION_CATCHING_WHITELISTAlon Zakai
2014-02-02generalize ExpandWithOverflow to handle completely nonconstant additionsAlon Zakai
2014-01-30suppress warnings on default nacl globalsAlon Zakai
2014-01-30assume worst-case alignment in PromoteIntegers, as we actually break on ↵Alon Zakai
unaligned operations
2014-01-29remove incorrect warning (ExpandI64 is a new pass of ours) and fix a ↵Alon Zakai
compilation warning
2014-01-29generalize and fix select legalization codeAlon Zakai
2014-01-29fix call legalization bugAlon Zakai
2014-01-29legalize phis >64 bitsAlon Zakai
2014-01-29handle >64bit trunc and zextAlon Zakai
2014-01-29legalize >64bit shifts of non-32-multiple amountsAlon Zakai
2014-01-29fix store on >64 bitsAlon Zakai
2014-01-29handle constants of >64 bits in legalizerAlon Zakai
2014-01-29legalize simple shifts of >64 bitsAlon Zakai
2014-01-29legalize icmp eq|ne on >64 bitsAlon Zakai
2014-01-28legalize and/or/xor >64 bitsAlon Zakai
2014-01-28start to make i64 splitting pass more generic, so it will eventually handle ↵Alon Zakai
i96 etc.
2014-01-27coordinate exception handling with setjmp - if exception handling code ↵Alon Zakai
generate a pre|postinvoke, use those for setjmp as well
2014-01-27Fix 64-bit Visual Studio build. TODO: Move this fix to PNaCl upstream.Jukka Jylänki
2014-01-24Fix Visual Studio 2010 build on ExpandI64::ensureLegalFunc. Cannot use ↵Jukka Jylänki
variable-length arrays on VS2010, since they are C99 which VS2010 does not support. TODO: Move this fix to PNacl upstream.