Commit Graph

1423 Commits

Author SHA1 Message Date
Fariborz Jahanian 75bd11273f Introduce f[no-]max-unknown-pointer-align=[number] option
to instruct the code generator to not enforce a higher alignment 
than the given number (of bytes) when accessing memory via an opaque 
pointer or reference. Patch reviewed by John McCall (with post-commit
review pending). rdar://16254558


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214911 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-05 18:37:48 +00:00
Alex Lorenz 8bff0ff2df Add coverage mapping generation.
This patch adds the '-fcoverage-mapping' option which
allows clang to generate the coverage mapping information
that can be used to provide code coverage analysis using
the execution counts obtained from the instrumentation 
based profiling (-fprofile-instr-generate).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214752 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 18:41:51 +00:00
Simon Atanasyan 67c4418c6e [Driver][Mips] Construct dynamic linker path by string concatination.
That reduces a number of `if` operators and prevent a combinatorics explosion
if/when more dynamic linker path variants added.

No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214712 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 12:57:52 +00:00
NAKAMURA Takumi 2726a1aa90 Tools.cpp: Avoid std::to_string() on -fbuild-session-timestamp to appease mingw32 builder.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214656 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-03 01:11:44 +00:00
Ben Langmuir 6f697025d3 Add -fbuild-session-file as an alternative to -fbuild-session-timestamp
Build systems tend to traffic in files and modification times, so having
them touch a file at the beginning of the build can be easier than
having them update the compile command they use every time they build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214577 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-01 22:12:21 +00:00
Bob Wilson 0f58539fef Fix up handling of ARM options for controlling strict alignment.
The -mstrict-align option was originally added in r167619 as a target-
independent option. It was then changed in r167623 to be implemented with an
ARM-specific backend option, even though the code remained in the
target-independent Clang::ConstructJob function. This means that if you used
the -mstrict-align option with a non-ARM target, you would still get the
-arm-strict-align option getting passed to the backend, which was harmless
but gross. The driver option was then replaced by the GCC-compatible
-m[no-]unaligned-access option (r189175) and modified to work with AArch64
(r208075). However, in the process, the help text for -mstrict-align was
incorrectly changed to show it as only being supported for AArch64. Even worse,
the logic for handling these options together with -mkernel was wrong for
AArch64, where -mkernel does not currently imply strict alignment.

This patch fixes up all of those things. Besides the obvious change to the
option help text, it moves the logic into the ARM and AArch64-specific parts
of the driver, so that the option will be correctly ignored for non-ARM
targets. <rdar://problem/17823697>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214148 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-29 00:23:18 +00:00
Ulrich Weigand accdaf18cb [PowerPC] Support ELFv1/ELFv2 ABI selection via -mabi= option
While Clang now supports both ELFv1 and ELFv2 ABIs, their use is currently
hard-coded via the target triple: powerpc64-linux is always ELFv1, while
powerpc64le-linux is always ELFv2.

These are of course the most common scenarios, but in principle it is
possible to support the ELFv2 ABI on big-endian or the ELFv1 ABI on
little-endian systems (and GCC does support that), and there are some
special use cases for that (e.g. certain Linux kernel versions could
only be built using ELFv1 on LE).

This patch implements the Clang side of supporting this, based on the
LLVM commit 214072.  The command line options -mabi=elfv1 or -mabi=elfv2
select the desired ABI if present.  (If not, Clang uses the same default
rules as now.)

Specifically, the patch implements the following changes based on the
presence of the -mabi= option:

In the driver:
- Pass the appropiate -target-abi flag to the back-end
- Select the correct dynamic loader version (/lib64/ld64.so.[12])

In the preprocessor:
- Define _CALL_ELF to the appropriate value (1 or 2)

In the compiler back-end:
- Select the correct ABI in TargetInfo.cpp
- Select the desired ABI for LLVM via feature (elfv1/elfv2)




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214074 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-28 13:17:52 +00:00
Joerg Sonnenberger 423eb50d92 Now that PIC generation on PPC32 is supported, hook up linking support
for NetBSD.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213972 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-25 20:57:24 +00:00
Tim Northover eb8c2c992e AArch64: update Clang for merged arm64/aarch64 triples.
The main subtlety here is that the Darwin tools still need to be given "-arch
arm64" rather than "-arch aarch64". Fortunately this already goes via a custom
function to handle weird edge-cases in other architectures, and it tested.

I removed a few arm64_be tests because that really isn't an interesting thing
to worry about. No-one using big-endian is also referring to the target as
arm64 (at least as far as toolchains go). Mostly they date from when arm64 was
a separate target and we *did* need a parallel name simply to test it at all.
Now aarch64_be is sufficient.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213744 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-23 12:32:58 +00:00
Daniel Sanders 51afa4757b [mips] -mno-shared should only be given to the assembler when -fPIC/-fpic/-fPIE/-fpie is not in effect.
This fixes compiler recursion on MIPS32r2.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213741 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-23 12:06:13 +00:00
Simon Atanasyan 08c4b31800 [Driver][Mips] Restore FIXME comment was removed accidentally.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213734 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-23 09:27:10 +00:00
Hans Wennborg 8a16cb1112 clang-cl: ignore /showIncludes when combined with /E (PR20336)
Both /showIncludes and /E write to stdout. Allowing both results
in interleaved output and an error when double-closing the file
descriptor, intended to catch issues like this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213589 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-21 23:42:07 +00:00
Daniel Sanders d100f97758 [mips] Use Triple::getVendor() instead of Triple::getVendorName() to identify 'mti' vendor triples.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213383 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-18 15:05:38 +00:00
Kevin Qin 08942b48da [AArch64] Implement Clang CLI interface proposal about "-march".
1. Revert "Add default feature for CPUs on AArch64 target in Clang"
at r210625. Then, all enabled feature will by passed explicitly by
-target-feature in -cc1 option.

2. Get "-mfpu" deprecated.

3. Implement support of "-march". Usage is:
    -march=armv8-a+[no]feature
  For instance, "-march=armv8-a+neon+crc+nocrypto". Here "armv8-a" is
  necessary, and CPU names are not acceptable. Candidate features are
  fp, neon, crc and crypto. Where conflicting feature modifiers are
  specified, the right-most feature is used.

4. Implement support of "-mtune". Usage is:
    -march=CPU_NAME
  For instance, "-march=cortex-a57". This option will ONLY get
  micro-architectural feature enabled specifying to target CPU,
  like "+zcm" and "+zcz" for cyclone. Any architectural features
  WON'T be modified.

5. Change usage of "-mcpu" to "-mcpu=CPU_NAME+[no]feature", which is
  an alias to "-march={feature of CPU_NAME}+[no]feature" and
  "-mtune=CPU_NAME" together. Where this option is used in conjunction
  with -march or -mtune, those options take precedence over the
  appropriate part of this option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213353 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-18 07:03:22 +00:00
Aaron Ballman 3c57879f0d Using a std::string instead of a StringRef because the Default case synthesizes a temporary std::string from a Twine. Assigning that into a StringRef causes the StringRef to refer to a temporary, and bad things happen.
This fixes a failing test case on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213265 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-17 13:28:50 +00:00
Daniel Sanders d462e61c12 [mips] Pass the ABI to the integrated assembler and add tests the existing arguments.
Summary:
With this patch (and a corresponding LLVM patch), assembling an empty file with
GCC and Clang -fintegrated-as produce near identical objects. The remaining
differences are:
* GCC/GAS produce objects have a .pdr section
* GCC/GAS produce objects have a .gnu.attributes section
Other differences are insignificant such as precise file offsets and the order
of strings in the string table.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213241 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-17 09:46:40 +00:00
Arthur Marble e8b35e1a75 Typically linker options are protected with -Xlinker or -Wl,
however certain sloppy Makefiles pass -z options directly to
the compiler. This patch enables clang to recognize these
options (because -z is not used by clang itself).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213198 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 21:16:16 +00:00
Simon Atanasyan 8f3316b6b1 [Driver][Mips] Reduce code duplication - use existing function
getMipsCPUAndABI() to get MIPS ABI name during multi-library selection.

No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213143 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 12:29:22 +00:00
Daniel Sanders 6f4b4a8c4e [mips] Correct the invocation of GAS in several cases.
Summary:
As a result of this patch, assembling an empty file with GCC and Clang (using
GAS as the assembler) now produces identical objects.

-mfp32/-mfpxx/-mfp64 now form a trinity of options. -mfpxx is the default
when the triple vendor is 'img' or 'mti', the ABI is O32, and the CPU is
between mips2 and mips32r2/mips64r2 (inclusive).

-mno-shared is always given to the assembler to match the effect of
-mabicalls (currently unimplemented but Clang acts as if it is given).
Similarly, -call_nonpic is always given to match the effect of -mplt (also
unimplemented and acts as if given) except when the ABI is 64 in which case
-mplt has no effect so -KPIC is given instead.

-mhard-float/-msoft-float are now passed on.

-modd-spreg/-mno-odd-spreg are now passed on.

-mno-mips16 is correctly passed on. The assembler option is -no-mips16 not
-mno-mips16

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213138 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 11:52:23 +00:00
Daniel Sanders d219ccb78c [mips] Add support for -mfpxx and -mno-fpxx.
Differential Revision: http://reviews.llvm.org/D4464


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213132 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 09:57:54 +00:00
Evgeniy Stepanov 8eb491465f Don't add -Bsymbolic by default on Android.
-Bsymbolic is not a platform requirement and should not
be added unconditionally.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213126 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 08:46:35 +00:00
Saleem Abdulrasool c074185309 Driver: bifurcate extended and basic MSC versioning
This restores the original behaviour of -fmsc-version. The older option
remains as a mechanism for specifying the basic version information. A
secondary option, -fms-compatibility-version permits the user to specify an
extended version to the driver.

The new version takes the value as a dot-separated value rather than the
major * 100 + minor format that -fmsc-version format. This makes it easier to
specify the value as well as a more flexible manner for specifying the value.

Specifying both values is considered an error.

The older parameter is left solely as a driver option, which is normalised into
the newer parameter. This allows us to retain a single code path in the
compiler itself whilst preserving the semantics of the old parameter as well as
avoid having to determine which of two formats are being used by the invocation.

The test changes are due to the fact that the compiler no longer supports the
old option, and is a direct conversion to the new option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213119 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 03:13:50 +00:00
Ehsan Akhgari a1c5477558 clang-cl: Implement the -arch flag
Summary:
This implements the -arch flag for both x86 and x86-64 by letting
them affect the default target features we pass to cc1.  -m machine
flags will override the features set by -arch.

Reviewers: hansw

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213083 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-15 18:27:51 +00:00
Argyrios Kyrtzidis 37cf385002 [Driver] clang::driver::getARMCPUForMArch() moved to llvm::Triple::getARMCPUForArch().
Depends on llvm r212846.
Suggested by Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212858 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-11 23:47:48 +00:00
Brad Smith 7992a8c10f Handle SPARC float command line parameters for SPARCv9.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212838 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-11 20:12:08 +00:00
Sylvestre Ledru e2b32738e0 GCC compatibility: Create a Group to ignore unsupported optimization.
Returns a warning when using an unknown optimization flag.
This patch includes -finline-limit as one of those ignored flags.
More options will be moved in this group

Patch by Arthur Marble <arthur@info9.net> in the context of
Debian Google Summer of code 2014.

Reviewers: rnk, Sylvestre



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212805 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-11 11:43:57 +00:00
Diego Novillo adc3bbec2b Enable -gcolumn-info by default.
This patch flips the default value for -gcolumn-info to be on by
default. I discussed the rationale and provided compile/size data
in:

http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-June/074290.html

This also updates the documentation and some tests that relied on
the lack of column information. Some tests had column information
in the expected output, but it was wrong (the tsan tests). Others
were using the driver to execute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212781 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-10 23:29:28 +00:00
Zinovy Nis 85809dc182 [x32] Adding X32 target support to driver, including TargetInfo,DescriptionString, flags, paths lookup, etc. Cover changes with new tests. The author of the patch is Pavel Chupin (@pavel.v.chupin).
The changes enable "hello world" on x32 target (x86_64-*-linux-gnux32). s/isX32/IsX32/ also fixed.

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212725 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-10 15:27:19 +00:00
Daniel Sanders 411e2368e8 [mips][mips64r6] Add support for mips-img-linux-gnu GCC toolchains
Summary:
* Support the multilib layout used by the mips-img-linux-gnu
* Recognize mips{,64}{,el}-img-linux-gnu as being aliases of mips-img-linux-gnu
* Use the correct dynamic linker for mips-img-linux-gnu
* Make mips32r6/mips64r6 the default CPU for mips-img-linux-gnu

Subscribers: mpf

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212719 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-10 14:40:57 +00:00
Daniel Sanders 82f92cfe05 [mips] Add support for -modd-spreg/-mno-odd-spreg
Differential Revision: http://reviews.llvm.org/D4432


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212700 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-10 10:39:51 +00:00
Argyrios Kyrtzidis a478bb991a [Driver] Expose getARMCPUForMArch() function in the Driver API; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212666 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-10 01:03:37 +00:00
Alp Toker 5676ff327f Remove unused sys/stat.h includes
The facility was abstracted to LLVM in r187364.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212441 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-07 08:37:15 +00:00
Simon Atanasyan 482e10336b [Driver][Mips] If ABI name is not provided deduce it from the target triple
not from the CPU name. This approach is closer to the method used by gcc driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212176 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-02 13:20:36 +00:00
David Majnemer 1d38bd7ba3 Driver: Handle /GR- in a compatible way with MSVC
There are slight differences between /GR- and -fno-rtti which made
mapping one to the other inappropriate.

-fno-rtti disables dynamic_cast, typeid, and does not emit RTTI related
information for the v-table.

/GR- does not generate complete object locators and thus will not
reference them in vftables.  However, constructs like dynamic_cast and
typeid are permitted.

This should bring our implementation of RTTI up to semantic parity with
MSVC modulo bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212138 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-01 22:24:56 +00:00
Sylvestre Ledru e3a5fc33bc GCC compatibility: Ignore -finput_charset=UTF-8 argument. It is the default in Clang.
Currently, we fail with an error.

Reviewers: rafael

Reviewed By: rafael

Subscribers: rnk, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212110 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-01 17:24:27 +00:00
Simon Atanasyan fc7c40b69a [Driver][Mips] MIPS ABI names "32" and "64" used as arguments of the "-mabi"
command line option only. Internally we convert them to the "o32" and "n64"
respectively. So we do not need to refer them anywhere after that conversion.

No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212096 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-01 10:59:09 +00:00
Alexey Samsonov eafa635155 [UBSan] Don't link UBSan runtime into shared libraries.
It used to be a feature of UBSan (it could sanitize a standalone
shared object instead of the whole program), but now it causes
more problems, like PR20165.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212064 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-30 20:27:16 +00:00
Ehsan Akhgari 273bb34c38 Use the newly added FindInEnvPath helper in clang
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212058 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-30 19:56:37 +00:00
Chandler Carruth a59329e276 Fix a stray semi-colon. (Found by a pedantic warning)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212003 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-29 22:42:51 +00:00
NAKAMURA Takumi 5905a57757 Revert r211866, r211895 and r211995, "Driver: use GNU::Link for the Generic_GCC toolchain". It broke users of Generic_GCC, cygwin and mingw32.
It reverts commits as follows:
  r211866: "Driver: use GNU::Link for the Generic_GCC toolchain"
  r211895: "Replace GetProgramPath("ld") with GetLinkerPath()."
  r211995: "Driver: add a cygwin linker tool"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211998 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-29 16:00:11 +00:00
Saleem Abdulrasool 61177a4810 Driver: add a cygwin linker tool
This adds a linker tool for the Windows cygwin environment.  This linker
invocation is significantly different from the generic ld invocation.  It
requires additional parameters as well as does not accept some normal
parameters.  This should fix self-hosting on Cygwin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211995 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-29 06:11:14 +00:00
Reid Kleckner ba02d7e2a8 clang-cl: Map /EHs- to -fno-exceptions
This isn't 100% compatible with MSVC, but it's close enough.  MSVC's /EH
flag doesn't really control exceptions so much as how to clean up after
an exception is thrown.  The upshot is that cl.exe /EHs- will compile
try, throw, and catch statements with a warning, but clang-cl will
reject such constructs with a hard error.  We can't compile such EH
constructs anyway, but this may matter to consumers of the AST.

Reviewers: hans

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211909 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-27 17:02:02 +00:00
Logan Chien 69f87edbeb Replace GetProgramPath("ld") with GetLinkerPath().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211895 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-27 12:37:36 +00:00
Saleem Abdulrasool 3f48d22b9e Driver: use GNU::Link for the Generic_GCC toolchain
This changes the behaviour of the driver for linking to match that of the
Generic_GCC::Assemble.    The default link should use "ld" rather than "gcc" for
the linker as gcc does.  This avoids the unnecessary round-tripping through gcc.
It also is much more reasonable behaviour from the user's perspective.  This
should have been updated with SVN r195554 which changed the behaviour of
Generic_GCC::Assemble.

The gcc_forward test needs to be updated to mark the fact that -march is a flag
for GCC not ld.  This was updated as a typo fix, but added a check for a flag
that is not a link flag.

The bindings test covers the change for testing, and thus no new test was added.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211866 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-27 05:06:41 +00:00
Hans Wennborg 29bbc5791e clang-cl: Don't store the cl compiler Tool on the stack (PR20131)
The Command will refer back to the Tool as its source,
so it has to outlive the Command.

Having the Tool on the stack would cause us to crash
when using "clang-cl -GR -fallback", because if the
Command fails, Driver::ExecuteCompilation tries to
peek at the Command's source.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211802 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-26 19:59:02 +00:00
Logan Chien bab68c96f1 Implement the -fuse-ld= option.
This commit implements the -fuse-ld= option, so that the user
can specify -fuse-ld=bfd to use ld.bfd.

This commit re-applies r194328 with some test case changes.
It seems that r194328 was breaking macosx or mingw build
because clang can't find ld.bfd or ld.gold in the given sysroot.
We should use -B to specify the executable search path instead.

Patch originally by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211785 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-26 14:23:45 +00:00
Will Schmidt daf050d8a7 Add ppc64/power8 as a target
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211778 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-26 13:34:10 +00:00
Reid Kleckner 5937825128 Forward -u to the linker on gnutools toolchains
Summary:
The BSDs and Darwin all forward the whole 'u' group, but gcc only
forwards -u so far as I can tell.  I only forward -u, since that's a
minimal change, and many people object to magically recognizing and
forwarding linker arguments.

Reviewers: chandlerc, joerg

Subscribers: cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211756 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-26 01:08:54 +00:00
Alexey Volkov 96a2ac536a Align with new GCC options for x86 Android
32-bit: +ssse3
64-bit: +sse4.2 +popcnt

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211688 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-25 12:15:36 +00:00
Simon Atanasyan 7925371bbe [Driver] Follow-up to r211598, r211663. Do not build a dynamic linker
path using sub-strings concatenation. Return the whole string explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211665 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-25 05:00:59 +00:00