Commit Graph
50524 Commits
Author SHA1 Message Date
Bill Wendling 21a7e1ac70 Merging r143712:
------------------------------------------------------------------------
r143712 | efriedma | 2011-11-04 10:29:35 -0700 (Fri, 04 Nov 2011) | 3 lines

Add missing argument for atomic instructions in c++ backend.  PR11268, part 2.


------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@143999 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 19:38:25 +00:00
Bill Wendling 39be04a27e Merging r143406:
------------------------------------------------------------------------
r143406 | efriedma | 2011-10-31 16:59:22 -0700 (Mon, 31 Oct 2011) | 3 lines

Add support for new atomics to cpp backend.  Misc other fixes while I'm here.  PR11268.


------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@143998 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 19:38:01 +00:00
Bill Wendling c3deb510f8 Merging r143290:
------------------------------------------------------------------------
r143290 | d0k | 2011-10-29 12:43:38 -0700 (Sat, 29 Oct 2011) | 3 lines

PPC: Disable moves for all CR subregisters.

Should fix assertion failures on ppc buildbots.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@143451 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-01 05:11:00 +00:00
Bill Wendling 31491eecf7 Merging r143194:
------------------------------------------------------------------------
r143194 | chapuni | 2011-10-28 07:12:22 -0700 (Fri, 28 Oct 2011) | 7 lines

Dwarf: [PR11022] Fix emitting DW_AT_const_value(>i64), to be host-endian-neutral.

Don't assume APInt::getRawData() would hold target-aware endianness nor host-compliant endianness. rawdata[0] holds most lower i64, even on big endian host.

FIXME: Add a testcase for big endian target.

FIXME: Ditto on CompileUnit::addConstantFPValue() ?
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@143449 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-01 05:08:55 +00:00
Bill Wendling c6db06a8c4 Merging r143437:
------------------------------------------------------------------------
r143437 | efriedma | 2011-10-31 21:49:29 -0700 (Mon, 31 Oct 2011) | 3 lines

Make sure we use the right insertion point when instcombine replaces a PHI with another instruction.  (Specifically, don't insert an arbitrary instruction before a PHI.)  Fixes PR11275.


------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@143438 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-01 04:51:01 +00:00
Bill Wendling 027113d1f6 Complete the missing parts of MIPS-JIT functionality. Patch by Petar Jovanovic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@143014 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-26 04:27:18 +00:00
Bill Wendling ae66c2a154 Merging r143006:
------------------------------------------------------------------------
r143006 | stoklund | 2011-10-25 18:47:48 -0700 (Tue, 25 Oct 2011) | 8 lines

Don't use floating point to do an integer's job.

This code makes different decisions when compiled into x87 instructions
because of different rounding behavior.  That caused phase 2/3
miscompares on 32-bit Linux when the phase 1 compiler was built with gcc
(using x87), and the phase 2 compiler was built with clang (using SSE).

This fixes PR11200.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@143013 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-26 04:25:53 +00:00
Bill Wendling f3e053947c Merging r142956:
------------------------------------------------------------------------
r142956 | grosbach | 2011-10-25 13:30:48 -0700 (Tue, 25 Oct 2011) | 4 lines

Make assert() message more informative.

PR11217.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142967 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25 20:42:34 +00:00
Bill Wendling 3d9fd99521 Merging r142869:
------------------------------------------------------------------------
r142869 | void | 2011-10-24 16:05:43 -0700 (Mon, 24 Oct 2011) | 4 lines

Check the visibility of the global variable before placing it into the stubs
table. A hidden variable could potentially end up in both lists.
<rdar://problem/10336715>

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142870 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24 23:06:48 +00:00
Bill Wendling 004c7309ca Merging r142841:
------------------------------------------------------------------------
r142841 | efriedma | 2011-10-24 13:24:21 -0700 (Mon, 24 Oct 2011) | 3 lines

Add support to the old JIT for acquire/release loads and stores on x86.  PR11207.


------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142842 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24 20:27:56 +00:00
Bill Wendling 3ae900aeaa In LLVM 2.9, the GHC calling convention is only supported on x86-32,
x86-64. We (GHC team) would like this patch included as we've recently
added support to GHC for the ARM platform.
Patch by David Terei!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142820 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24 18:08:38 +00:00
Bill Wendling 0745155de6 Merging r142801:
------------------------------------------------------------------------
r142801 | grosbach | 2011-10-24 10:16:24 -0700 (Mon, 24 Oct 2011) | 4 lines

Thumb2 LDM instructions can target PC. Make sure to encode it.

PR11220

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142808 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24 17:33:07 +00:00
Bill Wendling dce2875059 Patch to build win64 LLVM on Mingw. Patch by Ruben Van Boxem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142614 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20 20:33:11 +00:00
Bill Wendling 17b2b19ca7 Merging r142350:
------------------------------------------------------------------------
r142350 | baldrick | 2011-10-18 05:44:00 -0700 (Tue, 18 Oct 2011) | 3 lines

Fix a bunch of unused variable warnings when doing a release
build with gcc-4.6.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142609 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-20 20:28:08 +00:00
Bill Wendling bab41201fb Merging r142550:
------------------------------------------------------------------------
r142550 | evancheng | 2011-10-19 15:22:54 -0700 (Wed, 19 Oct 2011) | 1 line

Fix TLS lowering bug. The CopyFromReg must be glued to the TLSCALL. rdar://10291355
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142555 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19 23:49:38 +00:00
Bill Wendling 3b89f11c9f Merging r142493:
------------------------------------------------------------------------
r142493 | chandlerc | 2011-10-19 03:32:19 -0700 (Wed, 19 Oct 2011) | 5 lines

Generalize the reading of probability metadata to work for both branches
and switches, with arbitrary numbers of successors. Still optimized for
the common case of 2 successors for a conditional branch.

Add a test case for switch metadata showing up in the BlockFrequencyInfo pass.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142548 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19 22:13:20 +00:00
Bill Wendling 9462243b87 Merging r142492:
------------------------------------------------------------------------
r142492 | chandlerc | 2011-10-19 03:30:30 -0700 (Wed, 19 Oct 2011) | 7 lines

Teach the BranchProbabilityInfo analysis pass to read any metadata
encoding of probabilities. In the absense of metadata, it continues to
fall back on static heuristics.

This allows __builtin_expect, after lowering through llvm.expect
a branch instruction's metadata, to actually enter the branch
probability model. This is one component of resolving PR2577.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142547 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19 22:12:52 +00:00
Bill Wendling 3c1be9ddf9 Merging r142491:
------------------------------------------------------------------------
r142491 | chandlerc | 2011-10-19 03:12:41 -0700 (Wed, 19 Oct 2011) | 9 lines

Add pass printing support to BlockFrequencyInfo pass. The implementation
layer already had support for printing the results of this analysis, but
the wiring was missing.

Now that printing the analysis works, actually bring some of this
analysis, and the BranchProbabilityInfo analysis that it wraps, under
test! I'm planning on fixing some bugs and doing other work here, so
having a nice place to add regression tests and a way to observe the
results is really useful.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142546 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19 22:12:25 +00:00
Bill Wendling a7dea542b6 Merging r142168:
------------------------------------------------------------------------
r142168 | chandlerc | 2011-10-16 18:11:57 -0700 (Sun, 16 Oct 2011) | 8 lines

Add a routine to swap branch instruction operands, and update any
profile metadata at the same time. Use it to preserve metadata attached
to a branch when re-writing it in InstCombine.

Add metadata to the canonicalize_branch InstCombine test, and check that
it is tranformed correctly.

Reviewed by Nick Lewycky!
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142545 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19 22:11:55 +00:00
Bill Wendling 06bf8ff3f6 Merging r142537:
------------------------------------------------------------------------
r142537 | rafael | 2011-10-19 11:48:52 -0700 (Wed, 19 Oct 2011) | 1 line

Fix parsing of a line with only a # in it.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142539 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19 19:48:46 +00:00
Bill Wendling 70c2f2c9bc Apply r142132:
PR11143: Save the old diagnostic handler and call it when munging diagnostics for #line directives.

This reenables proper inline asm diagnostics in clang



git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142169 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17 03:47:20 +00:00
Bill Wendling 6b670624c5 This patch relies upon non-incorporated patches.
--- Reverse-merging r142156 into '.':
U    include/llvm/Support/SourceMgr.h
U    lib/MC/MCParser/AsmParser.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142161 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-16 21:58:10 +00:00
Bill Wendling e45a5dce89 Merging r142132:
------------------------------------------------------------------------
r142132 | d0k | 2011-10-16 03:48:29 -0700 (Sun, 16 Oct 2011) | 3 lines

PR11143: Save the old diagnostic handler and call it when munging diagnostics for #line directives.

This reenables proper inline asm diagnostics in clang
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142156 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-16 21:01:22 +00:00
Bill Wendling 9a1c399e29 Merging r142039:
------------------------------------------------------------------------
r142039 | chapuni | 2011-10-14 18:58:16 -0700 (Fri, 14 Oct 2011) | 3 lines

Windows/Memory.inc: Support the ability to allocate memory "near" another block of memory on Win32. It has fixed FIXME.

Thanks to Aaron Ballman!
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142095 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-16 01:49:31 +00:00
Bill Wendling c2bbf6907e ------------------------------------------------------------------------
r142058 | atrick | 2011-10-14 23:19:55 -0700 (Fri, 14 Oct 2011) | 7 lines

Fix SCEVExpander assert during LSR: "argument of incompatible type".

Just because we're dealing with a GEP doesn't mean we can assert the
SCEV has a pointer type. The fix is simply to ignore the SCEV pointer
type, which we really didn't need.
Fixes PR11138 webkit crash.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142094 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-16 01:47:12 +00:00
Andrew Trick 513b1f47c1 Fix indvars randomness by removing iteration over a map.
I rewrote the algorithm a while back so it doesn't require map lookup,
but neglected to change the data structure. This was caught by
llvm-gcc self host, not because there's anything special about
llvm-gcc, but because it is the only test for nondeterminism we
currently have. Unit tests don't work well for everything; we should
always try to have a nondeterminism stress test running.

Fixes PR11133: llvm-gcc self host .o mismatch after enable-iv-rewrite=false


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142036 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-15 01:38:14 +00:00
Bill Wendling 4ed1fb0095 Clear out the landing pad to call site map for each function.
This isn't put into the 'clear()' method because the information needs to stick
around (at least for a little bit) after the selection DAG is built.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142032 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-15 01:00:26 +00:00
Jakob Stoklund Olesen 534849687c Mark tADDrSPi as having side effects again.
It really doesn't, but when r141929 removed the hasSideEffects flag from
this instruction, it caused miscompilations.  I am guessing that it got
moved across a stack pointer update.

Also clear isRematerializable after checking that this instruction is
in fact never rematerialized in the nightly test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142030 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-15 00:57:13 +00:00
Chad Rosier d73462a1c9 Thumb1 does not support dynamic stack realignment.
rdar://10288916 is tracking this fix.

In the past, instcombine and other passes were promoting alloca alignment past
the natural alignment, resulting in dynamic stack realignment.  Lang's work now
prevents this from happening (LLVM commit r141599).  Now that this really 
shouldn't happen report a fatal error rather than silently generate bad code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142028 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-15 00:28:24 +00:00
Bill Wendling 918f2155e9 Mark registers as DEAD because they're really just clobbers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142027 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-15 00:27:44 +00:00
Eli Friedman 46995fa7e2 Add missing correctness check to ARMTargetLowering::ReconstructShuffle. Fixes PR11129.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142022 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 23:58:49 +00:00
Bill Wendling 5d79859f66 Make sure that the register is in the register class before adding it as a machine op.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142021 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 23:55:44 +00:00
Bill Wendling 969c9ef0dd Mark the invoke call instruction as implicitly defining the callee-saved registers.
The callee-saved registers cannot be live across an invoke call because the
control flow may continue along the exceptional edge. When this happens, all of
the callee-saved registers are no longer valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142018 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 23:34:37 +00:00
Chris Lattner aeee2d3a29 constify array itself, don't iterate multiple times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142013 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 22:50:21 +00:00
Tanya Lattner 2b28a74bc6 Allow the source module to be materialized during the linking process.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142010 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 22:17:46 +00:00
Richard Trieu 8223e45dff Fix a non-firing assert. Change:
assert("bad SymbolicOp.VariantKind");
To:
    assert(0 && "bad SymbolicOp.VariantKind");


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142000 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 20:50:26 +00:00
Torok Edwin 6563c87996 ocaml bindings: add getopcode for constant and instruction, and int64_of_const.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141990 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 20:37:49 +00:00
Torok Edwin 31116410de bindings: tab and indentation fixes of my previous commits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141989 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 20:37:42 +00:00
Evan Cheng b10946a5a9 A few 80-col violations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141988 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 20:36:23 +00:00
Owen Anderson 5d6a6736a1 Disable code/data region symbols on ELF targets, where different mapping symbols are used for ARM/Thumb mode code. This should only be re-enabled once we have a solution to properly distinguish these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141984 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 20:28:57 +00:00
Hal Finkel d712f935f7 Add an implementation of the CanLowerReturn function to the PPC backend
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141981 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 19:51:36 +00:00
Akira Hatanaka 1ce2668c84 Add f128 to datalayout string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141978 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 19:14:50 +00:00
Hal Finkel 8ee53e2eb6 initial test commit (remove whitespace)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141972 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 18:54:13 +00:00
Jakob Stoklund Olesen ac7caa0d43 Update live-in lists when splitting critical edges.
Fixes PR10814. Patch by Jan Sjödin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141960 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 17:25:46 +00:00
Akira Hatanaka 008b58c4ae Revert r141932, r141936 and r141937.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141959 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 17:16:39 +00:00
Jim Grosbach 312b7c950a Fix typo. "__sync_fetch_and-xor_4" should be "__sync_fetch_and_xor_4".
Pointed out by George Russell.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141956 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 15:53:48 +00:00
Nick Lewycky 4c7f1caadc An instruction's operands aren't necessarily instructions or constants. They
could be arguments, for example.

No testcase because this is a bug-fix broken out of a larger optimization patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141951 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 09:38:46 +00:00
Craig Topper 54a11176f6 Add X86 ANDN instruction. Including instruction selection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141947 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 07:06:56 +00:00
Craig Topper 909652f687 Add X86 TZCNT instruction and patterns to select it. Also added core-avx2 processor which is gcc's name for Haswell.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141939 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 03:21:46 +00:00
Akira Hatanaka 91d2cc9cdd Definition of function getMipsRegisterNumbering.
Patch by Jack Carter and Reed Kotler at Mips. 


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141938 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 03:04:24 +00:00