aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2014-03-28expand constantExprs for all illegal values, not just >=64bit, so that ↵Alon Zakai
things like nested i24 CEs are fixed up by promoteIntegers
2014-03-07fix the case where exceptions are lowered and we already had ↵Alon Zakai
getHigh/preInvoke/postInvoke defined in the module
2014-03-06Implement integer promotion for urem, udiv, srem, and sdivDan Gohman
The optimizer sometimes thinks it's beneficial to truncate all manner of i64 operators to narrower types, even when still wider than the platform's widest legal type.
2014-03-06Fix a use-after-free error in GlobalOpt CleanupConstantGlobalUsersDan Gohman
This is a backport of r197178 from LLVM trunk.
2014-03-05Disable the ResolveAliases and GlobalCleanup passes.Dan Gohman
Also add a test for handling of global aliases.
2014-03-05Disable the LowerExpectIntrinsic pass.Dan Gohman
2014-03-05Don't run a pass to strip dead prototypes; just ignore them.Dan Gohman
Also, fix the code for supressing declarations for no-op intrinsics.
2014-03-05Clean up the handling of inline asm.Dan Gohman
Make inline asm a report_fatal_error instead of an assertion failure so that it's a little friendlier, and add a test to make sure llc -march=js rejects inline asm. Also disable the PNaCl inline asm("":::"memory") lowering pass. If people are using this, it's best that we diagnose it as it likely isn't portable. There are usually better alternatives.
2014-03-03Fix alignment of vararg buffer allocas.Dan Gohman
Since we do 8-byte loads for va_arg of double, make sure the vararg buffer alloca is 8-byte aligned.
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