Commit Graph

770 Commits

Author SHA1 Message Date
David Chisnall 11d3f4cc27 Rename the GCC Objective-C runtime to gcc from gnu-fragile and the GNUstep
runtime to gnustep from gnu.  Fix EH for the GCC runtime.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159684 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03 20:49:52 +00:00
Bob Wilson 1fc6e4fa79 When using -pg targeting OS X 10.8, pass -no_new_main to the linker.
By default on OS X 10.8, we don't link with a crt1.o file and the linker
knows to use _main as the entry point.  But, when compiling with -pg, we
need to link with the gcrt1.o file, and the linker needs to be told to use
the "start" symbol as the entry point.  The -no_new_main linker option does
that last part.  <rdar://problem/11491405>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159683 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03 20:42:10 +00:00
Hans Wennborg de981f3ff1 Add -ftls-model command-line flag.
This allows for setting the default TLS model. (PR9788)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159336 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 08:01:44 +00:00
Benjamin Kramer 92c4fd5c17 Enable -mcpu=native and -march=native for arm targets.
This is only implemented on linux at the moment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159232 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26 22:20:06 +00:00
Richard Trieu 246b6aa676 Add template type diffing to Clang. This feature will provide a better
comparison between two templated types when they both appear in a diagnostic.
Type elision will remove indentical template arguments, which can be disabled
with -fno-elide-type.  Cyan highlighting is applied to the differing types.

For more formatting, -fdiagnostic-show-template-tree will output the template
type as an indented text tree, with differences appearing inline. Template
tree works with or without type elision.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159216 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26 18:18:47 +00:00
Alexey Samsonov 7f3260764a Improve support for -g options accepted by Clang:
1. Accept flags -g[0-3], -ggdb[0-3], -gdwarf-[2-4] and collapse them to simple -g (except -g0/-ggdb0).
2. Produce driver error on unsupported formats (-gcoff, -gstabs, -gvms) and options (-gtoggle).
3. Recognize and ignore flags -g[no-]strict-dwarf, -g[no-]record-gcc-switches.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158906 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21 08:22:39 +00:00
Ted Kremenek 8ab6c24076 Revert "Provide a -no-pedantic to cancel out -pedantic." This needs to be designed
a bit further.  We may wish to just have -Wno flags to silence warnings, and not have a -no-pedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158796 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20 07:03:37 +00:00
John McCall 260611a325 Restructure how the driver communicates information about the
target Objective-C runtime down to the frontend:  break this
down into a single target runtime kind and version, and compute
all the relevant information from that.  This makes it
relatively painless to add support for new runtimes to the
compiler.  Make the new -cc1 flag, -fobjc-runtime=blah-x.y.z,
available at the driver level as a better and more general
alternative to -fgnu-runtime and -fnext-runtime.  This new
concept of an Objective-C runtime also encompasses what we
were previously separating out as the "Objective-C ABI", so
fragile vs. non-fragile runtimes are now really modelled as
different kinds of runtime, paving the way for better overall
differentiation.

As a sort of special case, continue to accept the -cc1 flag
-fobjc-runtime-has-weak, as a sop to PLCompatibilityWeak.

I won't go so far as to say "no functionality change", even
ignoring the new driver flag, but subtle changes in driver
semantics are almost certainly not intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158793 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20 06:18:46 +00:00
Rafael Espindola 8af669f2f1 Add a -fuse-init-array option to cc1 and map to the UseInitArray target
option. On the driver, check if we are using libraries from gcc 4.7 or newer
and if so pass -fuse-init-array to the frontend.
The crtbegin*.o files in gcc 4.7 no longer call the constructors listed in
.ctors, so we have to use .init_array.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158694 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19 01:26:10 +00:00
Michael J. Spencer a2284f5dca [VS Toolchain] Correctly forward -l linker inputs to link.exe.
Patch by Nikola Smiljanic!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158664 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18 16:56:04 +00:00
David Blaikie 940152f726 Support -f[no-]rewrite-includes from the driver.
Review by Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158463 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-14 18:55:27 +00:00
John McCall dc9327a8da Provide a -no-pedantic to cancel out -pedantic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158416 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-13 19:48:01 +00:00
Hal Finkel 02a8427786 Add PPC support for translating gcc-style -mcpu options into LLVM -target-cpu options.
This functionality is based on what is done on ARM, and enables selecting PPC CPUs
in a way compatible with gcc's driver. Also, mirroring gcc (and what is done on x86),
-mcpu=native support was added. This uses the host cpu detection from LLVM
(which will also soon be updated by refactoring code currently in backend).

In order for this to work, the target needs a list of valid CPUs -- we now accept all CPUs accepted by LLVM.
A few preprocessor defines for common CPU types have been added.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158334 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-11 22:35:19 +00:00
Evgeniy Stepanov 837386287f Require -pie when linking with ASan on Android.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157923 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-04 11:15:05 +00:00
Simon Atanasyan 5e62779634 MIPS: Factor out code selects the float ABI as determined by -msoft-float,
-mhard-float, and -mfloat-abi= to the new function getMipsFloatABI. That
simplifies reuse of this code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157888 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-02 15:06:29 +00:00
Simon Atanasyan 1f0646e064 MIPS: Pass -KPIC argument to MIPS assembler if necessary.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157635 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-29 19:07:33 +00:00
Simon Atanasyan 003ab66823 Factor out the code retrieves the last PIC related argument from
the Clang::ConstructJob() to the new ArgList::getLastArg() routine
with eight argument. That simplifies reusing of this code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157633 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-29 18:50:33 +00:00
Alexey Samsonov a9cd83b1dd Make Clang driver pass the last option from -g group to the compiler.
Leave a better fixme for different debug info flags

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157602 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-29 08:10:34 +00:00
Chad Rosier 1893731703 [driver] Remove obsolete support for -A link option. The standard -A option is
used by the preprocessor.  Apple's GCC also supported a -A option for linking.

The ld man page has the following:
 -A basefile - Obsolete incremental load format.  This option is obsolete.

Nick Kledzik confirms this option is no longer needed/supported.
rdar://11455614

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156965 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-16 23:45:12 +00:00
Chad Rosier 005af27c60 Rename the driver option to -mno-implicit-float, per Eli's suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156950 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-16 21:19:55 +00:00
Chad Rosier ee9ad5ce48 [driver] Allow the driver to directly accept the -no-implicit-float option, so that the
generation of implicit floating point instructions can be disable for ARM. 
rdar://11409142


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156942 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-16 20:40:09 +00:00
Kostya Serebryany f7efb0e747 [tsan] add ThreadSanitizer linker flags on Linux and also copy the tsan-rt into the appropriate place at build time
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156906 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-16 06:36:00 +00:00
Douglas Gregor 04e326b3d0 Add the Objective-C runtime linking arguments after user-specified
linker arguments. Fixes <rdar://problem/11417441>. 


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156853 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-15 21:00:27 +00:00
Bob Wilson 63d9f3cdde Do not link with Objective-C libraries with -nostdlib or -nodefaultlibs.
<rdar://problem/11433499>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156841 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-15 18:57:39 +00:00
Chandler Carruth 2ba542c741 Teach the driver on Linux to respect -nodefaultlibs.
Patch from Andrew C. Morrow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156771 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-14 18:31:18 +00:00
Sirish Pande 5f9688b7c7 Hexagon V5 FP support.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156567 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-10 20:19:54 +00:00
Bob Wilson e0cc309536 Ignore a "generic" return value from getHostCPUName. <rdar://problem/11314502>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156487 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-09 17:53:10 +00:00
Nuno Lopes b3198a841e add -fbounds-checking option.
When enabled, clang generates bounds checks for array and pointers dereferences. Work to follow in LLVM's backend.

OK'ed by Chad; thanks for the review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156431 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-08 22:10:46 +00:00
Jean-Daniel Dupas 2e4fd6d9a1 Fix -Wlarge-by-value-copy option handling in the driver.
CC1 supports only the joined format.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156161 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-04 08:08:37 +00:00
Alexey Samsonov fd00eecad6 This patch adds a new Clang compiler flag "-gline-tables-only".
It reduces the amount of emitted debug information:
1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram,
DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only.
2) .debug_str contains only function names.
3) No debug data for types/namespaces/variables is emitted.
4) The data in .debug_line is enough to produce valid stack traces with
function names and line numbers.

Reviewed by Eric Christopher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156160 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-04 07:39:27 +00:00
Bob Wilson 8c4b4d3c29 Remove obsolete code for finding a fallback iOS SDK. <rdar://problem/11378535>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156149 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-04 03:09:46 +00:00
Bob Wilson 4206c27768 Rip out old code for finding libraries in GCC's directories.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156058 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-03 05:23:52 +00:00
Benjamin Kramer 769aa2d46f Driver: Turn the default value for -fmath-errno into a proper target hook and disable it by default on more platforms.
For now -fno-math-errno is the default on BSD-derived platforms (Darwin,
DragonFlyBSD, FreeBSD, NetBSD, OpenBSD). If the default is not right for
your platform, please yell. I only verified the result with the default
compilers on Darwin and FreeBSD.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155990 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-02 14:55:48 +00:00
James Molloy 8049c44d97 Fix forwarding of -fpack-struct from driver to CC1, and add a test.
-fpack-struct's handling has changed in CC1 (one of only two flags that needed changing) because the driver treats "-fpack-struct" as a boolean flag, and CC1 (did) treat it as an option with a separated value.

This change causes -fpack-struct=X to be forwarded correctly to -fpack-struct=X instead of erroneously to "-fpack-struct X"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155981 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-02 07:56:14 +00:00
Chandler Carruth 4f50c50e78 Fix a long-standing bug where Clang had a different default from GCC on
Linux and other (non-Darwin) platforms and have it use -fmath-errno by
default (for better or worse).

Darwin has seen the light here and uses -fno-math-errno by default, this
patch preserves that.

If any maintainers for a non-Linux platform would also like to opt-in to
-fno-math-errno by default, I'm happy to add folks, but we're currently
getting buts and misleading comparisons with GCC due to this difference
in behavior on Linux at least.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155607 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-26 02:10:51 +00:00
Evgeniy Stepanov a6ddc02921 Clang driver support for linking on Android.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155541 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-25 08:59:22 +00:00
Evgeniy Stepanov 4add84f83f Fix default cpu for -march=armv5e.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155540 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-25 08:35:56 +00:00
Evgeniy Stepanov eca187e9f2 Only pass -mcpu, -march, -mfpu to linux-as on ARM.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155431 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-24 09:05:31 +00:00
Chandler Carruth 6603ff85d4 Revert r155363, due to the underlying patches in LLVM causing regression
test suite failures.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155371 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-23 18:25:40 +00:00
Sirish Pande ac28eca18a Hexagon V5 (floating point) support in cfe.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155363 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-23 17:48:57 +00:00
Bob Wilson 0b1c715684 Link with Foundation whenever -fobjc-link-runtime is used. <rdar://10976177>
The check for excluding libarclite on i386 MacOSX should not apply to
Foundation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155263 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-21 00:21:42 +00:00
Evgeniy Stepanov 700c508fd4 Pass -mfloat-abi= to linuxtools assembler.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155191 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-20 09:03:40 +00:00
Chandler Carruth 103f41d0e7 Revert some Hexagon builtin commits to match reverts done to LLVM in
r155047. See the LLVM log for the primary motivation:
  http://llvm.org/viewvc/llvm-project?rev=155047&view=rev

Primary commit r154828:
  - Several issues were raised in review, and fixed in subsequent
    commits.
  - Follow-up commits also reverted, and which should be folded into the
    original before reposting:
    - r154837: Re-add the 'undef BUILTIN' thing to fix the build.
    - r154928: Fix build warnings, re-add (and correct) header and
      license
    - r154937: Typo fix.

Please resubmit this patch with the relevant LLVM resubmission.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155048 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-18 21:32:25 +00:00
Sirish Pande 7ac715fd31 Hexagon V5(Floating Point) support.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154828 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-16 17:04:05 +00:00
Sebastian Pop 4762a2da74 use DEFAULT_SYSROOT
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154792 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-16 04:16:43 +00:00
David Chisnall e58e6f9114 Don't link lib[std]c++ when -nostdlib is specified (Solaris driver).
Patch by Dmitri Shubin!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154392 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-10 11:49:50 +00:00
Evgeniy Stepanov e9b4d98f97 Pass -march, -mcpu, -mfpu to linuxtools assembler.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154389 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-10 09:05:40 +00:00
Rafael Espindola c515154323 Fix an annoying little bug I found while debugging another LTO issue. Gold
requires the -plugin to come before any -plugin-opt options, we were passing
them the other way around. With this one can run (for example):

clang -o foo foo.c -O4 -Wl,-plugin-opt=generate-api-file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154357 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-09 23:53:34 +00:00
Fariborz Jahanian e51fe0972a objective-c: remove -fobjc-default-synthesize-properties from the driver.
cc1 option remains though to invoke default property synthesis.
// rdar://11209719


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154334 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-09 18:58:55 +00:00
Fariborz Jahanian e52e2e6f48 objective-c: Remove -fno-objc-default-synthesize-properties
as the driver option.
// rdar://11209719


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154331 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-09 18:20:28 +00:00