Commit Graph

296 Commits

Author SHA1 Message Date
dim
ec84358430 Pull in r213790 from upstream clang trunk (by Richard Smith):
PR20228: don't retain a pointer to a vector element after the
  container has been resized.

This fixes a possible crash when compiling certain parts of libc++'s
type_traits header.
2015-01-01 22:44:02 +00:00
dim
30b89314c5 Add llvm patches corresponding to r276300, r276301 and r276324. 2014-12-28 02:33:13 +00:00
dim
1e759913cd Pull in r224890 from upstream llvm trunk (by David Majnemer):
PowerPC: CTR shouldn't fire if a TLS call is in the loop

  Determining the address of a TLS variable results in a function call in
  certain TLS models.  This means that a simple ICmpInst might actually
  result in invalidating the CTR register.

  In such cases, do not attempt to rely on the CTR register for loop
  optimization purposes.

  This fixes PR22034.

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

This fixes a "Invalid PPC CTR loop" error when compiling parts of libc
for PowerPC-32.
2014-12-28 02:30:03 +00:00
dim
f0e9784165 Pull in r221703 from upstream llvm trunk (by Bill Schmidt):
[PowerPC] Replace foul hackery with real calls to __tls_get_addr

  My original support for the general dynamic and local dynamic TLS
  models contained some fairly obtuse hacks to generate calls to
  __tls_get_addr when lowering a TargetGlobalAddress.  Rather than
  generating real calls, special GET_TLS_ADDR nodes were used to wrap
  the calls and only reveal them at assembly time.  I attempted to
  provide correct parameter and return values by chaining CopyToReg and
  CopyFromReg nodes onto the GET_TLS_ADDR nodes, but this was also not
  fully correct.  Problems were seen with two back-to-back stores to TLS
  variables, where the call sequences ended up overlapping with unhappy
  results.  Additionally, since these weren't real calls, the proper
  register side effects of a call were not recorded, so clobbered values
  were kept live across the calls.

  The proper thing to do is to lower these into calls in the first
  place.  This is relatively straightforward; see the changes to
  PPCTargetLowering::LowerGlobalTLSAddress() in PPCISelLowering.cpp.
  The changes here are standard call lowering, except that we need to
  track the fact that these calls will require a relocation.  This is
  done by adding a machine operand flag of MO_TLSLD or MO_TLSGD to the
  TargetGlobalAddress operand that appears earlier in the sequence.

  The calls to LowerCallTo() eventually find their way to
  LowerCall_64SVR4() or LowerCall_32SVR4(), which call FinishCall(),
  which calls PrepareCall().  In PrepareCall(), we detect the calls to
  __tls_get_addr and immediately snag the TargetGlobalTLSAddress with
  the annotated relocation information.  This becomes an extra operand
  on the call following the callee, which is expected for nodes of type
  tlscall.  We change the call opcode to CALL_TLS for this case.  Back
  in FinishCall(), we change it again to CALL_NOP_TLS for 64-bit only,
  since we require a TOC-restore nop following the call for the 64-bit
  ABIs.

  During selection, patterns in PPCInstrInfo.td and PPCInstr64Bit.td
  convert the CALL_TLS nodes into BL_TLS nodes, and convert the
  CALL_NOP_TLS nodes into BL8_NOP_TLS nodes.  This replaces the code
  removed from PPCAsmPrinter.cpp, as the BL_TLS or BL8_NOP_TLS
  nodes can now be emitted normally using their patterns and the
  associated printTLSCall print method.

  Finally, as a result of these changes, all references to get-tls-addr
  in its various guises are no longer used, so they have been removed.

  There are existing TLS tests to verify the changes haven't messed
  anything up).  I've added one new test that verifies that the problem
  with the original code has been fixed.

This fixes a fatal "Bad machine code" error when compiling parts of
libgomp for 32-bit PowerPC.
2014-12-27 14:50:53 +00:00
dim
2d8ca6e653 Pull in r213890 from upstream llvm trunk (by Jörg Sonnenberger):
Use the same .eh_frame encoding for 32bit PPC as on i386.

This fixes DT_TEXTREL errors when linking C++ objects using exceptions
on PowerPC.
2014-12-27 14:38:15 +00:00
dim
0d4784e66c Add llvm patches corresponding to r276211 and r276223. 2014-12-26 00:10:08 +00:00
dim
216743d017 Pull in r224415 from upstream llvm trunk (by Justin Hibbits):
Add parsing of 'foo@local".

  Summary:
  Currently, it supports generating, but not parsing, this expression.
  Test added as well.

  Test Plan: New test added, no regressions due to this.

  Reviewers: hfinkel

  Reviewed By: hfinkel

  Subscribers: llvm-commits

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

Pull in r224494 from upstream llvm trunk (by Justin Hibbits):

  Add a corresponding '@LOCAL' parse to match r224415.

  Pointed out by Jim Grosbach.
2014-12-25 23:57:31 +00:00
dim
b04364d6ca Amend r276211 for the new PowerPC relocation types that were added
there.  (Upstream is now using a generated file for this, so there is no
direct upstream commit associated with this change.)
2014-12-25 23:54:57 +00:00
dim
6c90d54f67 Pull in r214284 from upstream llvm trunk (by Hal Finkel):
[PowerPC] Add JMP_SLOT relocation definitions

  This will be required by upcoming patches for LLDB support.

  Patch by Justin Hibbits!

Pull in r221510 from upstream llvm trunk (by Justin Hibbits):

  Add Position-independent Code model Module API.

  Summary:
  This makes PIC levels a Module flag attribute, which can be queried by the
  backend.  The flag is named `PIC Level`, and can have a value of:

    0 - Backend-default
    1 - Small-model (-fpic)
    2 - Large-model (-fPIC)

  These match the `-pic-level' command line argument for clang, and the value of the
  preprocessor macro `__PIC__'.

  Test Plan:
  New flags tests specific for the 'PIC Level' module flag.
  Tests to be added as part of a future commit for PowerPC, which will use this new API.

  Reviewers: rafael, echristo

  Reviewed By: rafael, echristo

  Subscribers: rafael, llvm-commits

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

Pull in r221791 from upstream llvm trunk (by Justin Hibbits):

  Add support for small-model PIC for PowerPC.

  Summary:
  Large-model was added first.  With the addition of support for multiple PIC
  models in LLVM, now add small-model PIC for 32-bit PowerPC, SysV4 ABI.  This
  generates more optimal code, for shared libraries with less than about 16380
  data objects.

  Test Plan: Test cases added or updated

  Reviewers: joerg, hfinkel

  Reviewed By: hfinkel

  Subscribers: jholewinski, mcrosier, emaste, llvm-commits

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

Together, these changes implement small-model PIC support for PowerPC.

Thanks to Justin Hibbits and Roman Divacky for their assistance in
getting this working.
2014-12-25 18:22:22 +00:00
dim
a962ff2599 Remove doubled patch, which snuck in with the last merge from head. 2014-12-25 16:58:48 +00:00
dim
467c59d5a8 Merge ^/head r275759 through r275911. 2014-12-18 18:44:22 +00:00
dim
4c6065d7a8 Add clang patch corrsponding to r275773. 2014-12-14 18:21:03 +00:00
dim
d348675c78 Pull in r221170 from upstream clang trunk (by Roman Divacky):
Implement vaarg lowering for ppc32. Lowering of scalars and
  aggregates is supported. Complex numbers are not.

This adds va_args support for PowerPC (32 bit) to clang.
2014-12-14 18:20:03 +00:00
dim
cf4827c3ce Update clang patch for r275759 to use correct test cases. 2014-12-14 18:16:49 +00:00
dim
b6fa585bb3 Add clang patch corresponding to r275759. 2014-12-14 13:40:42 +00:00
dim
ae8b564996 Pull in r221170 from upstream clang trunk (by Roman Divacky):
Implement vaarg lowering for ppc32. Lowering of scalars and
  aggregates is supported. Complex numbers are not.

This adds va_args support for PowerPC (32 bit) to clang.

Reviewed by:	jhibbits
MFC after:	3 days
Differential Revision: https://reviews.freebsd.org/D1308
2014-12-14 13:38:10 +00:00
dim
9bf8c0f790 Update patch-r274286-llvm-r201784-asm-dollar.diff, so
test/MC/AsmParser/macros.s is properly deleted when patching.
2014-12-14 13:32:14 +00:00
dim
87e5a12b6a Update llvm patch for r275635 so all the tests will pass. 2014-12-13 20:17:54 +00:00
dim
4d03762b01 Update llvm patches for r274286 and r275633 so all the tests will pass. 2014-12-13 18:54:46 +00:00
dim
2a46c45cdb Add llvm patch corresponding to r275654, and clean up a few other patches. 2014-12-09 20:46:17 +00:00
dim
645e043040 Pull in r223147, r223255 and r223390 from upstream llvm trunk (by Roman
Divacky):

  Introduce CPUStringIsValid() into MCSubtargetInfo and use it for ARM
  .cpu parsing.

  Previously .cpu directive in ARM assembler didnt switch to the new
  CPU and therefore acted as a nop. This implemented real action for
  .cpu and eg. allows to assembler FreeBSD kernel with -integrated-as.

  Change the name to be in style.

  Add a FIXME as requested by Renato Golin.
2014-12-09 20:41:51 +00:00
dim
55681de413 Add llvm patch corresponding to r275635. 2014-12-09 20:05:05 +00:00
dim
c186a7a46b Add llvm patch corresponding to r275633. 2014-12-09 20:04:26 +00:00
dim
f9b5954255 Pull in r223171 from upstream llvm trunk (by Michael Zolotukhin):
PR21302. Vectorize only bottom-tested loops.

  rdar://problem/18886083

This fixes a bug in the llvm vectorizer, which could sometimes cause
vectorized loops to perform an additional iteration, leading to possible
buffer overruns.  Symptoms of this, which are usually segfaults, were
first noticed when building gcc ports, here:

https://lists.freebsd.org/pipermail/freebsd-ports/2014-September/095466.html
https://lists.freebsd.org/pipermail/freebsd-toolchain/2014-September/001211.html

Note: because this is applied on top of llvm/clang 3.5.0, this fix is
slightly different from the one just checked into head in r275633.
2014-12-09 07:48:25 +00:00
dim
d10a2336a8 Pull in r223171 from upstream llvm trunk (by Michael Zolotukhin):
PR21302. Vectorize only bottom-tested loops.

  rdar://problem/18886083

This fixes a bug in the llvm vectorizer, which could sometimes cause
vectorized loops to perform an additional iteration, leading to possible
buffer overruns.  Symptoms of this, which are usually segfaults, were
first noticed when building gcc ports, here:

https://lists.freebsd.org/pipermail/freebsd-ports/2014-September/095466.html
https://lists.freebsd.org/pipermail/freebsd-toolchain/2014-September/001211.html

Since this fix is very important for ports, bump __FreeBSD_version to
make it easier for port maintainers to test whether the fix has been
applied.

Upstream PR:	http://llvm.org/PR21302
MFC after:	3 days
2014-12-09 07:34:28 +00:00
dim
d60f78e7aa Add patch file for r275362. 2014-12-01 13:07:49 +00:00
dim
329af525ff For now, enable the clrex instruction for armv6, until upstream
implements this properly.

Submitted by:	andrew
2014-12-01 12:59:21 +00:00
dim
4078c6aadd Add patch file for r275280. 2014-11-30 00:09:26 +00:00
dim
e1b9e7abe7 Pull in r215811 from upstream llvm trunk (by Nico Weber):
arm asm: Let .fpu enable instructions, PR20447.

  I'm not very happy with duplicating the fpu->feature mapping in ARMAsmParser.cpp
  and in clang's driver. See the bug for a patch that doesn't do that, and the
  review thread [1] for why this duplication exists.

  1: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140811/231052.html

This makes the .fpu directive work properly, so we can successfully
assemble several .S files using the directive, under lib/libc/arm.
2014-11-30 00:08:14 +00:00
dim
e269691085 Add patch file for r275265. 2014-11-29 20:24:18 +00:00
dim
484688cbb5 Remove bogus revision numbers from diff header lines in the existing
llvm/clang patches.
2014-11-29 20:23:18 +00:00
dim
354f4d34dd Pull in r214802 from upstream llvm trunk (by Renato Golin):
Allow CP10/CP11 operations on ARMv5/v6

  Those registers are VFP/NEON and vector instructions should be used instead,
  but old cores rely on those co-processors to enable VFP unwinding. This change
  was prompted by the libc++abi's unwinding routine and is also present in many
  legacy low-level bare-metal code that we ought to compile/assemble.

  Fixing bug PR20025 and allowing PR20529 to proceed with a fix in libc++abi.

This enables assembling certain ARM instructions used in libgcc.
2014-11-29 20:18:08 +00:00
dim
10f4428790 Add patch file for r275160. 2014-11-27 00:39:01 +00:00
dim
d0207f44e2 Pull in r222856 from upstream llvm trunk (by David Majnemer):
Revert "Added inst combine transforms for single bit tests from Chris's note"

  This reverts commit r210006, it miscompiled libapr which is used in who
  knows how many projects.

  A test has been added to ensure that we don't regress again.

This fixes a miscompilation in libapr, which caused problems in svnlite.
2014-11-27 00:33:31 +00:00
dim
226a2bb6bf Add patch files for r275152, r275153 and r275154. 2014-11-26 23:57:12 +00:00
dim
753d443c1d Pull in r221900 from upstream clang trunk (by Ed Maste):
Hook up FreeBSD AArch64 support

  Patch from Andrew Turner.
2014-11-26 23:54:23 +00:00
dim
69259722ab Pull in r216571 from upstream llvm trunk (by Zachary Turner):
Fix some semantic usability issues with DynamicLibrary.

  This patch allows invalid DynamicLibrary instances to be
  constructed, and fixes the const-correctness of the isValid()
  method.

  No functional change.

This is needed for supporting the upgrade to a newer LLDB snapshot.
2014-11-26 23:53:35 +00:00
dim
7ef9d4d9e7 Pull in r215352 from upstream llvm trunk (by Tim Northover):
AArch64: add support for dynamic-loader relocations

  LLD needs them, and it's good to be able to print them properly when
  our object dumpers encounter them.

  Patch by Daniel Stewart.

This is needed for supporting the upgrade to a newer LLDB snapshot.
2014-11-26 23:52:59 +00:00
emaste
9b5367f596 Remove additional platform-specific LLDB code 2014-11-26 18:03:25 +00:00
emaste
3c9143531f Revert LLDB changes for Clang/LLVM 3.5 API compatibility
This reverts the following upstream revisions:

      SVN      git
    214335  59a1f270
    214340  42f16b1e
2014-11-26 18:02:22 +00:00
emaste
8b1de04a88 Remove LLDB platform support not currently of interest to us 2014-11-26 17:32:20 +00:00
emaste
0f63db7e1c Update paths for FreeBSD build infrastructure
This same change was applied upstream in a later verison.
2014-11-26 17:29:01 +00:00
emaste
0560b5220c There is no Python in the FreeBSD base system 2014-11-26 17:24:12 +00:00
emaste
81a58ce40f Avoid need for AppleObjCRuntime on FreeBSD
Since it is unlikely to provide much value to us, just #if 0 it away

Sponsored by:	DARPA, AFRL
2014-11-26 17:22:37 +00:00
emaste
a8080b5684 Revert LLDB changes for Clang/LLVM 3.5 API compatibility
This reverts the following upstream revisions:

     SVN       git
    214501  26d6f063
    215969  a083c0db
    216603  ee9cd340
    216810  f534f503

Sponsored by:	DARPA, AFRL
2014-11-26 17:09:58 +00:00
emaste
0147dda7de Update LLDB snapshot to upstream r216948 (git 50f7fe44)
This is approximately "LLDB 3.5" although with a little bit of skew,
and will go along with the Clang 3.5 import.

Sponsored by:	DARPA, AFRL
2014-11-26 16:48:12 +00:00
emaste
bfd4c39c61 Revert Clang 3.4 API compatibility changes
Re-apply previously reverted changes to restore LLDB to parity with
the last update as of upstream revision 202189. This is the first step
an LLDB update to correspond with the Clang 3.5 import and re-applies
the following upstream revisions:

      SVN      git
    199408  3ad0a1a1
    199689  05be72c3
    200085  9ad47a93

Sponsored by:	DARPA, AFRL
2014-11-26 16:23:32 +00:00
dim
9bedf10b18 Cleanup upstream build infrastructure files that we don't use. 2014-11-24 20:57:20 +00:00
dim
82ca21468e Cleanup patch set, and update README.TXT. Add three new patches. 2014-11-24 18:43:37 +00:00
dim
6148c19c73 Merge clang 3.5.0 release from ^/vendor/clang/dist, resolve conflicts,
and preserve our customizations, where necessary.
2014-11-24 18:11:16 +00:00
dim
2c8643c639 Merge llvm 3.5.0 release from ^/vendor/llvm/dist, resolve conflicts, and
preserve our customizations, where necessary.
2014-11-24 17:02:24 +00:00
bapt
1cbc103415 Fix an error (case on a .Nm) preventing mandoc from rendering the manpage
Fix mandoc warnings: extrat space at end of lines
2014-11-23 22:01:43 +00:00
dim
231e18d28b The fix imported into llvm in r274442 contains some C++11 constructs,
which gcc in base cannot handle.  Replace these with C++98 equivalents.

While here, add the patch for the adapted fix.

Reported by:	bz, kib
Pointy hat to:	dim
MFC after:	1 week
X-MFC-With:	r274442
2014-11-13 21:16:01 +00:00
dim
83e82266b6 Pull in r221709 from upstream llvm trunk (by Frédéric Riss):
Totally forget deallocated SDNodes in SDDbgInfo.

  What would happen before that commit is that the SDDbgValues associated with
  a deallocated SDNode would be marked Invalidated, but SDDbgInfo would keep
  a map entry keyed by the SDNode pointer pointing to this list of invalidated
  SDDbgNodes. As the memory gets reused, the list might get wrongly associated
  with another new SDNode. As the SDDbgValues are cloned when they are transfered,
  this can lead to an exponential number of SDDbgValues being produced during
  DAGCombine like in http://llvm.org/bugs/show_bug.cgi?id=20893

  Note that the previous behavior wasn't really buggy as the invalidation made
  sure that the SDDbgValues won't be used. This commit can be considered a
  memory optimization and as such is really hard to validate in a unit-test.

This should fix abnormally large memory usage and resulting OOM crashes
when compiling certain ports with debug information.

Reported by:	Dmitry Marakasov <amdmi3@amdmi3.ru>
Upstream PRs:	http://llvm.org/PR19031 http://llvm.org/PR20893
MFC after:	1 week
2014-11-12 20:01:10 +00:00
dim
b5810c05d5 Add llvm patch corresponding to r274286. 2014-11-08 16:37:59 +00:00
dim
cfcb039e4e Pull in r201784 from upstream llvm trunk (by Benjamin Kramer):
AsmParser: Disable Darwin-style macro argument expansion on non-darwin targets.

  There is code in the wild that relies on $0 not being expanded.

This fixes some cases of using $ signs in literals being incorrectly
assembled.

Reported by:	Richard Henderson
Upstream PR:	http://llvm.org/PR21500
MFC after:	3 days
2014-11-08 13:19:48 +00:00
dim
17dda45b30 Add a few missing llvm/clang patches, update the other ones to be able
to apply with the same patch options onto a fresh upstream llvm/clang
3.4.1 checkout, and use approximately the same header tempate for them.

MFC after:	3 days
2014-09-21 15:37:39 +00:00
dim
d29687c2d2 Pull in r217410 from upstream llvm trunk (by Bob Wilson):
Set trunc store action to Expand for all X86 targets.

  When compiling without SSE2, isTruncStoreLegal(F64, F32) would return
  Legal, whereas with SSE2 it would return Expand. And since the Target
  doesn't seem to actually handle a truncstore for double -> float, it
  would just output a store of a full double in the space for a float
  hence overwriting other bits on the stack.

  Patch by Luqman Aden!

This should fix clang -O0 on i386 assigning garbage to floats, in
certain scenarios.

PR:		187437
Submitted by:	cebd@gmail.com
Obtained from:	http://llvm.org/viewvc/llvm-project?rev=217410&view=rev
MFC after:	3 days
2014-09-14 18:50:38 +00:00
emaste
bfa78c0f08 Add clang patch corresponding to r271432 2014-09-11 18:20:49 +00:00
emaste
ba8f8d0e99 Merge upstream Clang rev 205331 debuginfo crash fix:
Debug info: fix a crash when emitting IndirectFieldDecls, which were
    previously not handled at all.
    rdar://problem/16348575

MFC after:	1 week
Sponsored by:	DARPA, AFRL
2014-09-11 18:19:08 +00:00
emaste
775e453498 Add clang patch for r271282
Note that r271282 contains only the src change from Clang rev 200797.
This patch file includes two follow-on changes to the test case, which
do not apply to the copy in the FreeBSD tree.

Upstream Clang revisions:

200797:

    Debug info: fix a crasher when when emitting debug info for
    not-yet-completed templated types. getTypeSize() needs a complete type.

    rdar://problem/15931354

200798:

    Simplify testcase from r200797 some more.

200805:

    Further simplify r200797 and add an explanatory comment.

PR:		193347
MFC after:	3 days
Sponsored by:	DARPA, AFRL
2014-09-08 18:48:54 +00:00
emaste
d7464b8424 Merge Clang debug info crash fix rev 200797:
Debug info: fix a crasher when when emitting debug info for
    not-yet-completed templated types. getTypeSize() needs a complete type.

    rdar://problem/15931354

PR:		193347
MFC after:	3 days
Sponsored by:	DARPA, AFRL
2014-09-08 18:43:33 +00:00
emaste
bea6044a5e Correct patch paths (remove contrib/llvm/)
The example in contrib/llvm/patches/README.TXT fails otherwise.

Sponsored by:	DARPA, AFRL
2014-09-05 18:07:15 +00:00
sbruno
f7a7a42d5f Apparently, the patch commited in svn r271029 doesn't actually do anyting,
so we still need to modify the code in place. Pointed out by emaste.

MFC after:	2 days
Relnotes:	yes
2014-09-03 15:48:07 +00:00
sbruno
89b1d95c6d Do not direct commit to contrib/llvm. Make the change a patch file instead.
Reverts 271025 but still functionally patches it.  Original intent is still
the same.  Pointed out by rdivacky.

MFV:  Only emit movw on ARMv6T2

Building for the FreeBSD default target ARMv6 was emitting movw ASM on certain
test cases (found building qmake4/5 for ARM).  Don't do that, moreover, the AS
in base doesn't understand this instruction for this target.  One would need
to use --integrated-as to get this to build if desired.

http://llvm.org/viewvc/llvm-project?view=revision&revision=216989

Submitted by:	ian
Reviewed by:	dim
Obtained from:	llvm.org
MFC after:	2 days
Relnotes:	yes
2014-09-03 15:32:38 +00:00
sbruno
23ddd98993 MFV: Only emit movw on ARMv6T2
Building for the FreeBSD default target ARMv6 was emitting movw ASM on certain
test cases (found building qmake4/5 for ARM).  Don't do that, moreover, the AS
in base doesn't understand this instruction for this target.  One would need
to use --integrated-as to get this to build if desired.

http://llvm.org/viewvc/llvm-project?view=revision&revision=216989

Submitted by:	ian
Reviewed by:	dim
Obtained from:	llvm.org
MFC after:	2 days
2014-09-03 14:16:50 +00:00
rdivacky
690851410f Add the patch commited in r270147. 2014-08-18 18:07:28 +00:00
rdivacky
fd559b198f Backport r197824, r213427 and r213960 from LLVM trunk:
r197824 | rdivacky | 2013-12-20 19:08:54 +0100 (Fri, 20 Dec 2013) | 2 lines

  Implement initial-exec TLS for PPC32.

  r213427 | hfinkel | 2014-07-19 01:29:49 +0200 (Sat, 19 Jul 2014) | 7 lines

  [PowerPC] 32-bit ELF PIC support

  This adds initial support for PPC32 ELF PIC (Position Independent Code; the
  -fPIC variety), thus rectifying a long-standing deficiency in the PowerPC
  backend.

  Patch by Justin Hibbits!

  r213960 | hfinkel | 2014-07-25 19:47:22 +0200 (Fri, 25 Jul 2014) | 3 lines

  [PowerPC] Support TLS on PPC32/ELF

  Patch by Justin Hibbits!

Reviewed by: jhibbits
Approved by: dim
2014-08-18 18:05:55 +00:00
andrew
43f6afd7ee Update the ARMv6 core clang targets to be an arm1176jzf-s. This brings us
in line with gcc in base as this makes llvm generate code for the armv6k
variant of the instruction set.
2014-08-01 16:53:04 +00:00
emaste
7abc3b4099 Remove unused readline header
Readline is no longer installed after r268461.  A readline compatibility
header is provided by libedit, but readline definitions do not seem to
be used by LLDB anyhow.

Submitted by:	markj, Jan Beich
2014-07-11 07:31:55 +00:00
dim
8d2630ee6c Fix breakage after r267981.
Pointy hat to:	dim
MFC after:	3 days
X-MFC-With:	r267981
2014-06-28 09:53:44 +00:00
dim
57a4414eb5 Add the llvm patch for r267981. 2014-06-27 20:45:17 +00:00
dim
0b58858351 Pull in r211627 from upstream llvm trunk (by Bill Schmidt):
[PPC64] Fix PR20071 (fctiduz generated for targets lacking that
  instruction)

  PR20071 identifies a problem in PowerPC's fast-isel implementation
  for floating-point conversion to integer.  The fctiduz instruction
  was added in Power ISA 2.06 (i.e., Power7 and later).  However, this
  instruction is being generated regardless of which 64-bit PowerPC
  target is selected.

  The intent is for fast-isel to punt to DAG selection when this
  instruction is not available.  This patch implements that change.
  For testing purposes, the existing fast-isel-conversion.ll test adds
  a RUN line for -mcpu=970 and tests for the expected code generation.
  Additionally, the existing test fast-isel-conversion-p5.ll was found
  to be incorrectly expecting the unavailable instruction to be
  generated.  I've removed these test variants since we have adequate
  coverage in fast-isel-conversion.ll.

This is needed to compile clang with debug+asserts on older powerpc64
and ppc970 targets.

Requested by:	jhibbits
MFC after:	3 days
2014-06-27 20:41:12 +00:00
dim
e1337076d1 Add the llvm patch for r267704. 2014-06-21 18:47:30 +00:00
dim
17974915f6 Pull in r211435 from upstream llvm trunk (by Benjamin Kramer):
Legalizer: Add support for splitting insert_subvectors.

  We handle this by spilling the whole thing to the stack and doing the
  insertion as a store.

  PR19492. This happens in real code because the vectorizer creates
  v2i128 when AVX is enabled.

This fixes a "fatal error: error in backend: Do not know how to split
the result of this operator!" message encountered during compilation of
the net-p2p/libtorrent-rasterbar port.

Reported by:	Evgeniy <iron@mail.ua>
MFC after:	3 days
2014-06-21 18:22:23 +00:00
dim
3c64dadf01 Add the clang patch for r266674. 2014-05-25 19:28:34 +00:00
dim
bed9056632 Pull in r209489 from upstream clang trunk (by Akira Hatanaka):
Fix a bug in xmmintrin.h.

  The last step of _mm_cvtps_pi16 should use _mm_packs_pi32, which is a function
  that reads two __m64 values and packs four 32-bit values into four 16-bit
  values.

  <rdar://problem/16873717>

MFC after:	3 days
2014-05-25 19:22:28 +00:00
dim
8ba34e6179 Add the clang patch for r265477. While here, add a description to the
patch for r263619, and unify all the URLs to point to svnweb.
2014-05-24 22:27:31 +00:00
dim
2f29f665c9 Upgrade our copy of llvm/clang to 3.4.1 release. This release contains
mostly fixes, for the following upstream bugs:

http://llvm.org/PR16365 http://llvm.org/PR17473 http://llvm.org/PR18000
http://llvm.org/PR18068 http://llvm.org/PR18102 http://llvm.org/PR18165
http://llvm.org/PR18260 http://llvm.org/PR18290 http://llvm.org/PR18316
http://llvm.org/PR18460 http://llvm.org/PR18473 http://llvm.org/PR18515
http://llvm.org/PR18526 http://llvm.org/PR18600 http://llvm.org/PR18762
http://llvm.org/PR18773 http://llvm.org/PR18860 http://llvm.org/PR18994
http://llvm.org/PR19007 http://llvm.org/PR19010 http://llvm.org/PR19033
http://llvm.org/PR19059 http://llvm.org/PR19144 http://llvm.org/PR19326

MFC after:	2 weeks
2014-05-12 18:45:56 +00:00
emaste
9f6783a973 Merge -fstandalone-debug from Clang r198655:
Implement a new -fstandalone-debug option. rdar://problem/15685848
  It controls everything that -flimit-debug-info used to, plus the
  vtable type optimization. The old -fno-limit-debug-info option is now an
  alias to -fstandalone-debug and vice versa.

  Standalone is the default on Darwin until dtrace is updated to work with
  non-standalone debug info (rdar://problem/15758808).

  Note: I kept the LimitedDebugInfo name in CodeGenOptions::DebugInfoKind
  because NoStandaloneDebugInfo sounded even more confusing.
2014-05-07 00:51:24 +00:00
emaste
222e977a76 Add patches corresponding to r264826 and r264827 2014-04-23 18:36:32 +00:00
emaste
0ac3796980 Merge Clang r202185:
Debug info: Generate debug info for variadic functions.
  Paired commit with LLVM.

  rdar://problem/13690847

This merege includes changes to use the Clang 3.4 API (revisions
199686 and 200082) in lib/CodeGen/CGDebugInfo.cpp:

getParamType  -> getArgType
getNumParams  -> getNumArgs
getReturnType -> getResultType

Sponsored by:	DARPA, AFRL
2014-04-23 18:26:12 +00:00
emaste
f244473dd4 Merge LLVM r202188:
Debug info: Support variadic functions.
  Variadic functions have an unspecified parameter tag after the last
  argument. In IR this is represented as an unspecified parameter in the
  subroutine type.

  Paired commit with CFE r202185.

  rdar://problem/13690847

  This re-applies r202184 + a bugfix in DwarfDebug's argument handling.

This merge includes a change to use the LLVM 3.4 API in
lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:

DwarfUnit -> CompileUnit

Sponsored by:       DARPA, AFRL
2014-04-23 18:25:11 +00:00
dim
9cf1770552 Update the llvm/clang patch for r264345. 2014-04-11 18:40:29 +00:00
dim
134a8ae044 Amend r263891, by making clang default to DWARF2 debug info format for
all FreeBSD versions, not just 10.x and earlier.  Apparently too many
people seem to have trouble with post-1993 formats.

Also remove the related notes about messing with kernel configuration
files from UPDATING, which are now superfluous.

Requested by:	many
MFC after:	3 days
2014-04-11 16:51:35 +00:00
dim
5da85f3005 Add the llvm/clang patch for r263891. 2014-03-29 00:48:50 +00:00
dim
3dd17d8d4a Make clang default to DWARF2 debug info format for FreeBSD 10.x and
earlier.  For head, this commit does not change anything, but it is
purely meant to be MFC'd.

MFC after:	3 days
2014-03-29 00:25:27 +00:00
emaste
f1587c2296 lldb: Invoke PT_KILL from ProcessPosix::DoDestroy
We previously sent SIGKILL to the debuggee in DoDestroy, but did not
actually detach or kill via ptrace.  It seems that this somehow didn't
matter on Linux, but did on FreeBSD.

This would happen when quitting LLDB while stopped at a breakpoint, for
example.  The debuggee remained stopped in ptrace (with the signal
either pending or lost).  After a timeout of a second or two LLDB exits,
which caused the debuggee to resume and dump core from an unhandled
SIGTRAP.

BringProcessIntoLimbo is a poorly named wrapper for ptrace(PT_KILL)
which is the desired behaviour from DoDestroy.

http://llvm.org/pr18894

Sponsored by:	DARPA, AFRL
2014-03-24 01:21:37 +00:00
andrew
5875d91c71 Add the llvm/clang patch for r263619. 2014-03-23 14:06:09 +00:00
andrew
e97a0e252b Pull in r201662 from upstream clang trunk:
Add FreeBSD ARM EABI hard-float support

  Patch by Andrew Turner.
2014-03-22 09:23:13 +00:00
dim
ce0b215965 Add separate patch files for all the customizations we have currently
applied to our copy of llvm/clang.  These can be applied in alphabetical
order to a pristine llvm/clang 3.4 release source tree, to result in the
same version used in FreeBSD.

This is intended to clearly document all the changes until now, which
mostly consist of cherry pickings from the respective upstream trunks,
plus a number of hand-written FreeBSD-specific ones.  Hopefully those
can eventually be cleaned up and sent upstream too.

MFC after:	1 week
X-MFC-With:	r263313
2014-03-18 22:07:45 +00:00
dim
e369b023a1 Pull in r203311 from upstream llvm trunk (by Arnold Schwaighofer):
ISel: Make VSELECT selection terminate in cases where the condition type has to
  be split and the result type widened.

  When the condition of a vselect has to be split it makes no sense widening the
  vselect and thereby widening the condition. We end up in an endless loop of
  widening (vselect result type) and splitting (condition mask type) doing this.
  Instead, split both the condition and the vselect and widen the result.

  I ran this over the test suite with i686 and mattr=+sse and saw no regressions.

  Fixes PR18036.

With this fix the original problem case from the graphics/rawtherapee
port (posted in http://llvm.org/PR18036 ) now compiles within ~97MB RSS.

Reported by:	mandree
MFC after:	1 week
2014-03-18 19:35:26 +00:00
dim
8ec5b308b8 Pull in r196939 from upstream llvm trunk (by Reid Kleckner):
Reland "Fix miscompile of MS inline assembly with stack realignment"

  This re-lands commit r196876, which was reverted in r196879.

  The tests have been fixed to pass on platforms with a stack alignment
  larger than 4.

  Update to clang side tests will land shortly.

Pull in r196986 from upstream llvm trunk (by Reid Kleckner):

  Revert the backend fatal error from r196939

  The combination of inline asm, stack realignment, and dynamic allocas
  turns out to be too common to reject out of hand.

  ASan inserts empy inline asm fragments and uses aligned allocas.
  Compiling any trivial function containing a dynamic alloca with ASan is
  enough to trigger the check.

  XFAIL the test cases that would be miscompiled and add one that uses the
  relevant functionality.

Pull in r202930 from upstream llvm trunk (by Hans Wennborg):

  Check for dynamic allocas and inline asm that clobbers sp before building
  selection dag (PR19012)

  In X86SelectionDagInfo::EmitTargetCodeForMemcpy we check with MachineFrameInfo
  to make sure that ESI isn't used as a base pointer register before we choose to
  emit rep movs (which clobbers esi).

  The problem is that MachineFrameInfo wouldn't know about dynamic allocas or
  inline asm that clobbers the stack pointer until SelectionDAGBuilder has
  encountered them.

  This patch fixes the problem by checking for such things when building the
  FunctionLoweringInfo.

  Differential Revision: http://llvm-reviews.chandlerc.com/D2954

Together, these commits fix the problem encountered in the devel/emacs
port on the i386 architecture, where a combination of stack realignment,
alloca() and memcpy() could incidentally clobber the %esi register,
leading to segfaults in the temacs build-time utility.

See also: http://llvm.org/PR18171 and http://llvm.org/PR19012

Reported by:	ashish
PR:		ports/183064
MFC after:	1 week
2014-03-18 19:23:41 +00:00
dim
4bc91d9e36 Garbage collect the old way of adding the libstdc++ include directories
in clang's InitHeaderSearch.cpp.  This has been superseded by David
Chisnall's commit in r255321.

Moreover, if libc++ is used, the libstdc++ include directories should
not be in the search path at all.  These directories are now only used
if you pass -stdlib=libstdc++.

MFC after:	3 days
X-MFC-With:	r261991
2014-03-11 21:43:10 +00:00
dim
72e3ed2c5c Repair recognition of "CC" as an alias for the C++ compiler, since it
was silently broken by upstream for a Windows-specific use-case.

Apparently some versions of CMake still rely on this archaic feature...

Reported by:	rakuco
MFC after:	3 days
X-MFC-With:	r261991
2014-03-11 21:11:43 +00:00
dim
aa6dd67866 Repair a few minor mismerges from r262261 in the clang-sparc64 project
branch.  This is also to minimize differences with upstream.

MFC after:	3 weeks
X-MFC-With:	r262613
2014-03-10 21:58:38 +00:00
dim
813e459619 Pull in r203007 from upstream clang trunk:
Don't produce an alias between destructors with different calling conventions.

  Fixes pr19007.

(Please note that is an LLVM PR identifier, not a FreeBSD one.)

This should fix Firefox and/or libxul crashes (due to problems with
regparm/stdcall calling conventions) on i386.

Reported by:	multiple users on freebsd-current
PR:		bin/187103
MFC after:	1 week
2014-03-05 22:43:30 +00:00
dim
ec11adae82 Merge from head up to r262611. 2014-02-28 17:46:56 +00:00
dim
0074a11a56 Pull in r196874 from upstream llvm trunk:
Fix a crash that occurs when PWD is invalid.

  MCJIT needs to be able to run in hostile environments, even when PWD
  is invalid. There's no need to crash MCJIT in this case.

  The obvious fix is to simply leave MCContext's CompilationDir empty
  when PWD can't be determined. This way, MCJIT clients,
  and other clients that link with LLVM don't need a valid working directory.

  If we do want to guarantee valid CompilationDir, that should be done
  only for clients of getCompilationDir(). This is as simple as checking
  for an empty string.

  The only current use of getCompilationDir is EmitGenDwarfInfo, which
  won't conceivably run with an invalid working dir. However, in the
  purely hypothetically and untestable case that this happens, the
  AT_comp_dir will be omitted from the compilation_unit DIE.

This should help fix assertions occurring with ports-mgmt/tinderbox,
when it is using jails, and sometimes invalidates clang's current
working directory.

Reported by:	decke
MFC after:	2 weeks
X-MFC-With:	r261991
2014-02-28 17:12:31 +00:00
dim
38fa7d76e5 Pull in r202422 from upstream llvm trunk (by Roman Divacky):
Lower FNEG just like FABS to fneg[ds] and fmov[ds], thus avoiding
  expensive libcall. Also, Qp_neg is not implemented on at least
  FreeBSD. This is also what gcc is doing.
2014-02-27 23:17:00 +00:00