Commit graph

16 commits

Author SHA1 Message Date
joerg
7680932808 Add a workaround for the extern "C" vs static issue still in discussion
on the LLVM lists.
2013-04-02 12:00:04 +00:00
adam
96416000fe Removed patch-projects_sample_autoconf_config.sub 2013-01-03 15:36:01 +00:00
adam
2b128a5b38 Changes 3.2:
* Improvements to Clang's diagnostics
* Support for tls_model attribute
* Type safety attributes
* Documentation comment support
More...
2013-01-03 15:19:53 +00:00
marino
b29309b0ee lang/clang: Improve DragonFly support
1) Don't pass both gcc 4.4 and gcc 4.7 paths to the driver.  Detect
   if gcc47 is available and use those paths, otherwise fall back to
   gcc44.
2) Add support for exception handling
3) Add rdynamic support
4) Add gnu-hash style support
5) Fix (!!) crtstuff (This was obsolete, include PIE support)
6) Remove rpath-link
7) Remove unneeded duplicate libgcc handling
8) Make libgcc handling match gcc specs (different for gcc 4.4 and 4.7)
9) Update dragonfly driver test
2012-11-29 11:42:24 +00:00
marino
c77b6b8746 lang/clang: Fix binary generation on latest DragonFly
Clang was hardwired to search for crt* stuff and libstdc++ at
/usr/lib/gcc41.  This worked for most people even when DragonFly
moved to gcc 4.4 as the primary base compiler since gcc 4.1 was
usually also on the system.

With the release of DragonFly 3.2, gcc 4.7 replaced gcc 4.1 and
clang stopped compiling due to not being able to find libraries and
crt* objects.  The new patches make clang driver first look for
gcc 4.7 and failing to find that: gcc 4.4.

The other patches were "de-fuzzed".
Revision bump was necessary because clang did build, it just didn't
work.

Patches submitted upstream:
http://llvm.org/bugs/show_bug.cgi?id=14417
2012-11-22 22:45:15 +00:00
marino
137d5b9bb5 lang/clang: USE_TOOLS+= pod2man pod2html, fix DragonFly
For some reason, LLVM is using autoconf files from 2003 which is before
DragonFly even existed.  I submitted a bug report #12944 at llvm.org's
bugzilla to request they use versions from 2012.

Also, installation fails at document generation without some extra tools.
No need to revbump, either built or it didn't without these packages.
2012-05-25 09:06:52 +00:00
adam
e36ee3bc36 Changes 3.1:
* Major New Features
  - AddressSanitizer, a fast memory error detector.
  - MachineInstr Bundles, Support to model instruction bundling / packing.
  - ARM Integrated Assembler, A full featured assembler and direct-to-object
    support for ARM.
  - Basic Block Placement Probability driven basic block placement.
* LLVM IR and Core Improvements
  - A new type representing 16 bit half floating point values has been added.
  - IR now supports vectors of pointers, including vector GEPs.
  - Module flags have been introduced. They convey information about the module
    as a whole to LLVM subsystems. This is currently used to encode Objective C
    ABI information.
  - Loads can now have range metadata attached to them to describe the possible
    values being loaded.
  - The llvm.ctlz and llvm.cttz intrinsics now have an additional argument which
    indicates whether the behavior of the intrinsic is undefined on a zero
    input. This can be used to generate more efficient code on platforms that
    only have instructions which don't return the type size when counting bits
    in 0.
* Optimizer Improvements
  - The loop unroll pass now is able to unroll loops with run-time trip counts.
    This feature is turned off by default, and is enabled with the
    -unroll-runtime flag.
  - A new basic-block autovectorization pass is available. Pass -vectorize to
    run this pass along with some associated post-vectorization cleanup passes.
    For more information, see the EuroLLVM 2012 slides: Autovectorization with
    LLVM.
  - Inline cost heuristics have been completely overhauled and now closely model
    constant propagation through call sites, disregard trivially dead code
    costs, and can model C++ STL iterator patterns.
2012-05-23 11:02:41 +00:00
adam
f98f34f879 LLVM 3.0 includes several major changes and big features:
* llvm-gcc is no longer supported, and not included in the release. We recommend
  switching to Clang or DragonEgg.
* The linear scan register allocator has been replaced with a new "greedy"
  register allocator, enabling live range splitting and many other optimizations  that lead to better code quality. Please see its blog post or its talk at the
  Developer Meeting for more information.
* LLVM IR now includes full support for atomics memory operations intended to
  support the C++'11 and C'1x memory models. This includes atomic load and
  store, compare and exchange, and read/modify/write instructions as well as
  a full set of memory ordering constraints. Please see the Atomics Guide for
  more information.
* The LLVM IR exception handling representation has been redesigned and
  reimplemented, making it more elegant, fixing a huge number of bugs, and
  enabling inlining and other optimizations. Please see its blog post and the
  Exception Handling documentation for more information.
* The LLVM IR Type system has been redesigned and reimplemented, making it
  faster and solving some long-standing problems. Please see its blog post for
  more information.
* The MIPS backend has made major leaps in this release, going from an
  experimental target to being virtually production quality and supporting
  a wide variety of MIPS subtargets. See the MIPS section below for more
  information.
* The optimizer and code generator now supports gprof and gcov-style coverage
  and profiling information, and includes a new llvm-cov tool (but also works
  with gcov). Clang exposes coverage and profiling through GCC-compatible
  command line options.
2011-12-02 14:42:12 +00:00
adam
579efe6f2b Fix LLVM bug 8765 (longjmp issue on NetBSD); patches courtesy of joerg. 2011-05-07 16:54:56 +00:00
adam
615078084b LLVM 2.9 includes several major new capabilities:
* Type Based Alias Analysis (TBAA) is now implemented and turned on by default
  in Clang. This allows substantially better load/store optimization in some
  cases. TBAA can be disabled by passing -fno-strict-aliasing.
* This release has seen a continued focus on quality of debug information. LLVM
  now generates much higher fidelity debug information, particularly when
  debugging optimized code.
* Inline assembly now supports multiple alternative constraints.
* A new backend for the NVIDIA PTX virtual ISA (used to target its GPUs) is
  under rapid development. It is not generally useful in 2.9, but is making
  rapid progress.
2011-04-07 09:26:33 +00:00
adam
a42175eb8d LLVM distfile has been changed on master-site.
The difference is in configure and configure.ac scripts: "rc" has been removed
from version strings.
2010-10-25 12:47:09 +00:00
adam
991e5072bb Changes 2.8:
* libc++ and LLDB are major new additions to the LLVM collective.
* LLVM 2.8 now has pretty decent support for debugging optimized code.
  You should be able to reliably get debug info for function arguments,
  assuming that the value is actually available where you have stopped.
* A new 'llvm-diff' tool is available that does a semantic diff of .ll files.
* The MC subproject has made major progress in this release. Direct .o file
  writing support for darwin/x86[-64] is now reliable and support for other
  targets and object file formats are in progress.
* The memcpy, memmove, and memset intrinsics now take address space qualified
  pointers and a bit to indicate whether the transfer is "volatile" or not.
* Per-instruction debug info metadata is much faster and uses less memory by
  using the new DebugLoc class.
* LLVM IR now has a more formalized concept of "trap values", which allow the
 optimizer to optimize more aggressively in the presence of undefined behavior,
 while still producing predictable results.
* LLVM IR now supports two new linkage types (linker_private_weak and
 linker_private_weak_def_auto) which map onto some obscure MachO concepts.
* The optimizer now has support for updating debug information as it goes.
  A key aspect of this is the new llvm.dbg.value intrinsic. This intrinsic
  represents debug info for variables that are promoted to SSA values
  (typically by mem2reg or the -scalarrepl passes).
* The JumpThreading pass is now much more aggressive about implied value
  relations, allowing it to thread conditions like "a == 4" when a is known to
  be 13 in one of the predecessors of a block. It does this in conjunction with
  the new LazyValueInfo analysis pass.
* The new RegionInfo analysis pass identifies single-entry single-exit regions
  in the CFG. You can play with it with the "opt -regions analyze" or "opt
  -view-regions" commands.
* The loop optimizer has significantly improved strength reduction and analysis
  capabilities. Notably it is able to build on the trap value and signed
  integer overflow information to optimize <= and >= loops.
* The CallGraphSCCPassManager now has some basic support for iterating within
  an SCC when a optimizer devirtualizes a function call. This allows inlining
  through indirect call sites that are devirtualized by store-load forwarding
  and other optimizations.
* The new -loweratomic pass is available to lower atomic instructions into
  their non-atomic form. This can be useful to optimize generic code that
  expects to run in a single-threaded environment.
2010-10-21 13:52:15 +00:00
drochner
432d07a6b8 Add C++ include path for NetBSD's /usr/include/g++, addresses
PR pkg/43237 by NAKAJIMA Yoshihiro.
This isn't too useful yet due to an incompatibility (apparently
a bug in gcc-4.1) which will be fixed soon.
bump PKGREVISION
2010-05-04 16:52:16 +00:00
drochner
2f1f24dcec update to 2.7
many fixes and improvements, eg C++ support
see the release notes for details
2010-04-27 15:12:08 +00:00
hasso
5ab15d8bfc Make 'clang -pthread' work on recent DragonFly versions. The patch from
upstream svn trunk. Bump PKGREVISION.
2009-11-25 12:32:30 +00:00
drochner
5faa4b6e5a add clang-2.6, a C compiler based om LLVM, based on Adam Hoka's llvm
pkg in pkgsrc-wip
(This installs all the LLVM bits too, so it conflicts with a pure llvm
pkg, but it is not easily separated.)
2009-11-16 23:24:37 +00:00