Граф коммитов

1433 Коммитов

Автор SHA1 Сообщение Дата
Douglas Gregor ba97b6ea0e Have -fms-no-extensions turn off -fms-compatibility
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142798 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24 15:49:38 +00:00
Benjamin Kramer f634bcece3 Pack struct better.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142725 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-22 15:40:28 +00:00
NAKAMURA Takumi 813a40750f lib/Driver/Tools.cpp: Use PathV2::is_absolute() to add -fdebug-compilation-dir. pwd[0] might not be '/' on Win32 hosts.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142720 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-22 10:25:25 +00:00
Nick Lewycky 7c4fd9121f Take DW_AT_comp_dir from $PWD when it's present and starts with a '/'. This is
closer to what GCC does, except that GCC also checks that the inodes for $PWD
and '.' match.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142633 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-21 02:32:14 +00:00
Daniel Dunbar 024f4be866 Frontend: Support -iframework.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142418 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-18 20:40:38 +00:00
Argyrios Kyrtzidis c19981c271 [driver] Make the driver to link the simulator arclite lib when passing -mios-simulator-version-min.
rdar://10218700

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142372 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-18 17:40:15 +00:00
Argyrios Kyrtzidis dceb11fdcf Revert r142311, -mios-simulator-version-min does not work correctly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142322 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-18 00:22:49 +00:00
Argyrios Kyrtzidis b56e6ad87f Remove the hack where we sniff the __IPHONE_OS_VERSION_MIN_REQUIRED define.
We can use -mios-simulator-version-min now. rdar://10218700

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142311 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17 23:41:26 +00:00
Nick Lewycky ea523d73a6 Wire up support for the controlling the extended dwarf .file directive. With
r142300 but not this patch, clang -S may emit .s files that assemblers other
than llvm-mc can't parse.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142301 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17 23:05:52 +00:00
Rafael Espindola 19706f8e70 Implement -static-libstdc++ for linux.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142290 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17 22:14:51 +00:00
Rafael Espindola abf3ac7131 Implement -static-libgcc on linux and refactor the code responsible for adding
libgcc to the link line into a helper function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142269 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17 21:39:04 +00:00
Chandler Carruth 16a6355248 Fix a silly bug introduced in r142133.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142134 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-16 11:05:04 +00:00
Chandler Carruth 7a09d012f6 Clean up some cruft in the library path searching logic by making
'libdir' mean the actual library directory, not the GCC subdirectory of
the library directory. That was just a confusing pattern. Instead,
supply proper GCC subdirectories when scanning for various triple-based
subdirectories with a GCC installation in them. This also makes it much
more obvious how multiarch installations, which have a triple-based
prefix as well as suffix work.

Also clean up our handling of these triple-prefixed trees by using them
in both a multiarch pattern and a non-multiarch pattern whenever they
exist.

Note that this *does not* match what GCC does on Debian, the only truly
multiarch installation I've been able to get installed and test on. GCC
appears to have a bug, and ends up searching paths like
'/lib/../../lib32' which makes no sense what-so-ever. Instead, I've
tried to encode the rational logic that seems clearly intended by GCC's
pattern. GCC ends up with patterns like:

  /lib/../../lib32
  /usr/lib/../../lib32
  /usr/lib/x86_64-linux-gnu/../..lib32

Only the last one makes any sense having a '/../..' in it, so in Clang,
that's the only one which gets a '/../..' in it.

I *think* this will fix Debian multiarch links. I'm committing without
baking this logic into our test suite so I can test on a few different
systems. If all goes well (and no one screams) I'll check in some more
comprehensive tests for multiarch behavior tomorrow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142133 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-16 10:54:30 +00:00
Rafael Espindola f886d6f5ec Fix the CXX_INCLUDE_ROOT case that was out of date with ScanLibDirForGCCTriple.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141980 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 19:50:08 +00:00
Bob Wilson 905c45f15a Use Triple.isOSDarwin() instead of comparing against Triple::Darwin.
There are now separate Triple::MacOSX and Triple::IOS values for the OS
so comparing against Triple::Darwin will fail to match those.  Note that
I changed the expected output for the Driver/rewrite-objc.m test, which had
previously not been passing Darwin-specific options with the macosx triple.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141944 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 05:03:44 +00:00
Richard Smith 575fdda948 Rename -Wc++0x-compat, -Wc++0x-extensions and -Wc++0x-narrowing from c++0x to
c++11. The old names are kept for backwards-compatibility. Patch by Ahmed
Charles! Names for backwards-compatible DiagGroups removed by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141913 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-13 23:32:09 +00:00
Benjamin Kramer 84cbd4b0a9 Add triple for RHEL 5 to the libpath collecting logic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141887 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-13 20:45:37 +00:00
Douglas Gregor d596c4d3f8 The Objective-C rewriter uses the fragile ABI, always.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141795 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-12 18:28:53 +00:00
Daniel Dunbar 92d6d40483 Driver: Add support for a new -nostdlibinc option.
- This disables the system include directories, but not the compiler builtin
   directories. Useful for projects that want to use things like the intrinsic
   headers, but are otherwise freestanding.

 - I'm willing to reconsider the option naming, I also considered providing an
   explicit -builtinc (which would match -nobuiltininc), but this is more
   consistent with existing options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141692 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-11 18:20:16 +00:00
Daniel Dunbar a268fc0f22 Frontend: Replace -nostdinc by -nostdsysteminc (which is just system include
paths). The -nostdinc behavior is now -nostdsysteminc + -nobuiltininc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141691 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-11 18:20:10 +00:00
Roman Divacky 8642f21ca7 Link in Scrt1.o instead of crt1.o when -pie is specified.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141573 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-10 19:47:45 +00:00
Bob Wilson 30aa95140a Partially revert r141374: allow use of libc++ prior to Mac OS X 10.7.
Apple only supports libc++ on OS X 10.7 and later but for the open-source
compiler that restriction doesn't make sense.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141566 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-10 18:46:10 +00:00
Peter Collingbourne ae57eadbc1 OpenCL: add driver/frontend support for precompiled headers
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141516 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-09 22:03:19 +00:00
NAKAMURA Takumi 96e21710e8 Fix "Uninitialized" warnings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141487 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-08 11:31:53 +00:00
NAKAMURA Takumi a789ca9b96 Whitespace
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141486 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-08 11:31:46 +00:00
Argyrios Kyrtzidis 228971738f [arcmt] Ignore linking errors when doing ARC migration, rdar://10247606
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141434 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-07 22:58:08 +00:00
Bob Wilson 163b151809 Clang driver changes for iOS 5.0 and OS X Lion support.
Check whether the libc++ library is available when using -stdlib=libc++,
and also adjust the check for whether to link with -lgcc_s.1.
Patch by Ted Kremenek and Daniel Dunbar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141374 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-07 17:54:41 +00:00
Chad Rosier ae1aee6683 More cleanup using StringSwitch.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141373 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-07 17:48:56 +00:00
Bob Wilson a59956b473 Use StringSwitch. Thanks for Chandler for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141344 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-07 00:37:57 +00:00
Benjamin Kramer 5f22614327 Use strpbrk(3) instead of open coding it.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141328 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-06 22:53:35 +00:00
Bob Wilson fd22cce762 Remove DISABLE_ARM_DARWIN_USE_MOVT ifdefs. Radar 9456730.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141320 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-06 21:52:27 +00:00
Bob Wilson 7c627146b3 Rearrange for readability. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141309 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-06 20:27:40 +00:00
Bob Wilson 169a6e0bc4 Add a missing check for cortex-a9.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141308 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-06 20:27:38 +00:00
Ivan Krasin 08f35a79f7 Add -Wlanguage-extension-token option for ext_token_used warning.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141268 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-06 02:46:34 +00:00
Daniel Dunbar 88934e85f8 Driver & AST: Implement support for -fpack-struct and -fpack-struct= command
line options.
 - <rdar://problem/10120602>, PR9631

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141211 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05 21:04:55 +00:00
Chad Rosier 22807868ad [driver] For consistency, handle all shell special characters handled by the
quoting code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141205 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05 20:09:11 +00:00
Chad Rosier a2dd7d08a3 [driver] The -v option doesn't quoted the command line arguments for historical
reasons.  However, it does seems practical to quote strings that need it.
rdar://10221951


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141202 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05 19:51:41 +00:00
Chandler Carruth 1203600d22 Use the InstalledDir correctly, and test it correctly as well. =/ Should
have noticed this previously, sorry.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141167 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05 06:38:03 +00:00
Chandler Carruth dbc2144408 Teach Clang to cope with GCC installations that have unusual patch
"versions". Currently, these are just dropped on the floor, A concrete
version number will always win out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141159 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05 03:09:51 +00:00
Chandler Carruth 5058e3a18c Implement the feature I was originally driving toward when I started
this saga. Teach the driver to detect a GCC installed along side Clang
using the existing InstalledDir support in the Clang driver. This makes
a lot of Clang's behavior more automatic when it is installed along side
GCC.

Also include the first test cases (more to come, honest) which test both
the install directory behavior, and the version sorting behavior to show
that we're actually searching for the best candidate GCC installation
now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141145 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05 01:01:57 +00:00
Chandler Carruth e089088b4a Hoist the other messy part out of an inner loop and into a helper
function, cleaning up along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141134 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 23:17:12 +00:00
Chandler Carruth 4c9403c57e Hoist the first chunk of this into a helper function. No functionality
change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141131 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 22:58:04 +00:00
Chad Rosier 43f7e62442 [driver] Improve r141053 by only emitting the warning if the original input
was assembly.  Otherwise, something like -save-temps causes the integrated
assembler to warn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141127 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 22:35:48 +00:00
Chandler Carruth 7441068690 Fix Windows+MinGW which introduces noise into path separators.
There should be a better solution to this; Michael and I are continuing
to discuss exactly what it should be. The one solution I'm very
uncomfortable with is making the FileCheck tests use a regex for each
path separator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141126 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 22:22:13 +00:00
Chandler Carruth 6ab8e6231f Now that multiple prefixes are much cheaper to search for GCC
installations, support them when installed directly under the system
root ('/lib/gcc/...' essentially).

With this, Clang can correctly detect and use a cross-compiling GCC
installation within a system root and use it.

Again, test cases will be coming in later commits, as I'm going to write
a few test cases that exercise nearly all of this logic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141121 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 21:22:42 +00:00
Chandler Carruth 6d9694cf46 Rework the search for a GCC installation still further. This combines
two fundamental changes, as they ended up being interrelated.

The first is to walk from the root down through the filesystem so that
we prune subtrees which do not exist early. This greatly reduces the
filesystem traffic of this routine. We store the "best" GCC version we
encounter, and look at all of the GCC installations available.

Also, we look through GCC versions by scanning the directory rather than
using a hard-coded list of versions. This has several benefits. It makes
it much more efficient to locate a GCC installation even in the presence
of a large number of different options by simply reading the directory
once. It also future-proofs us as new GCC versions are released and
installed. We no longer have a hard coded list of version numbers, and
won't need to manually updated it. We can still filter out known-bad
versions as needed. Currently I've left in filtering for all GCC
installations prior to 4.1.1, as that was the first one supported
previously.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141120 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 21:22:33 +00:00
Chandler Carruth c916377785 Add a comment explaining that I have a better plan for implementing the
GCC installation search that requires fewer filesystem operations.
Planning to implement that next as the current approcah while thorough
(and so far looks correct) does a very unfortunate number of filesystem
operations.

I'm motivated to fix this in no small part because I would like to
support a much larger space of triples and GCC versions, which would
explode the current algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141073 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 09:58:21 +00:00
Chandler Carruth a24b9802d3 Invert the loop for detecting installed GCC trees. This make the loop
find the newest GCC available, among other goodness. It makes the entire
system much less prone to error from prefixes and/or system roots
pruning early the set of triples and GCC versions available.

Also, improve some comments and simplify the forms of some of the loops.

This causes the driver to stat directories more often than is strictly
necessary, but the alternatives which I looked at that still
accomplished this goal needed quite a bit more code and were likely not
much faster.

Test cases for this, now that our behavior here is significantly more
principled and predictable, should come tomorrow as I walk back through
VMs looking for edge cases that are missed after this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141072 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 09:47:17 +00:00
Chandler Carruth 810e08126f Fuse the two halves of the GCC installation detection. This is
significantly cleaner (IMO) and more principled. We now walk down each
layer of the directory hierarchy searching for the GCC install. This
change does in fact introduce a significant behavior change in theory,
although in practice I don't know of any distro that will be impacted by
it negatively, and Debian may (untested) get slightly better through it.

Specifically, the logic now looks exhaustively for patterns such as:

  /usr/lib/<triple>/gcc/<triple>

Previously, this would only be selected if there was *also*
a '/usr/lib/gcc/<triple>' directory, or if '<triple>' were the excat
DefaultHostTriple in the driver.

There is a 4-deep nested loop here, but it doesn't do terribly many
filesystem operations, as we skip at each layer of that layer's
directory doesn't exist.

There remains a significant FIXME in this logic: it would be much better
to first build up a set of candidate components for each of the four
layers with a bottom-up pruning such as this, but then select the final
installation using a top-down algorithm in order to find the newest GCC
installation available, regardless of which particular path leads to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141071 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 08:32:14 +00:00
Bob Wilson 10a82cde7c Rip out flags for controlling C++ "production mode" separately.
This is old leftover cruft from the days when C++ was not yet ready
for prime time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141063 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 05:34:14 +00:00
Chandler Carruth adc4afb4a5 Factor the data apart from the logic of locating various GCC
installations. This first selects a set of prefixes and a set of
compatible triples for the current architecture. Once selected, we drive
the search with a single piece of code.

This code isn't particularly efficient as it stands, but its only
executed once. I'm hoping as I clean up the users of this information,
it will also slowly become both cleaner and more efficient.

This also changes the behavior slightly. Previously, we had an ad-hoc
list of prefixes and triples, and we only looked for some triples
beneath specific prefixes and vice versa. This has led to lots of
one-off patches to support triple X, or support lib dir Y. Even without
going to a fully universal driver, we can do better here. This patch
makes us always look first in either 'lib32' or 'lib64' on 32- or 64-bit
hosts (resp.). However, we *always* look in 'lib'.

Currently I have one lingering problem with this strategy. We might find
a newer or better GCC version under a different (but equally compatible)
triple. Fundamentally, this loop needs to be fused with the one below.
That's my next patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141056 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 02:28:41 +00:00
Chad Rosier d0790b8a06 [driver] Improve r141053 by only emitting the warning if the original input
was assembly.  Otherwise, something like -save-temps causes the integrated
assembler to warn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141055 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 01:53:36 +00:00
Chad Rosier 968b7a71c8 [driver] Emit a warning if the user has requested debug information and we're
using the integrated assembler.
rdar://10216353

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141053 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 01:01:30 +00:00
Chandler Carruth 048e649070 Refactor the detection of a GCC installation into a helper class. This
is designed to allow the detection to record more rich information about
the installation than just a single path.

Mostly, the functionality remains the same. This is primarily
a factoring change. However, the new factoring immediately fixes one
issue where on ubuntu we didn't walk up enough layers to reach the
parent lib path. I'll have a test tree for that once I finish making the
Ubuntu tree work reasonably.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141011 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03 18:16:54 +00:00
Chandler Carruth 38ec546a56 Enable generic multilib support on 32bit hosts. Previously this was only
enabled for debian hosts, which is quite odd. I think all restriction on
when Clang attempts to use a multilib installation should go away. Clang
is fundamentally a cross compiler. It behaves more like GCC when built
as a cross compiler, and so it should just use multilib installs when
they are present on the system. However, there is a very specific
exemption for Exherbo, which I can't test on, so I'm leaving that in
place.

With this, check in a generic test tree for multilib on a 32-bit host.
This stubs out many directories that most distributions don't use but
that uptsream GCC supports. This is intended to be an agnostic test that
the driver behaves properly compared with the GCC driver it aims for
compatibility with.

Also, fix a bug in the driver that this testing exposed (see!) where it
was incorrectly testing the target architecture rather than the host
architecture.

If anyone is having trouble with the tree-structure stubs I'm creating
to test this, let me know and I can revisit the design. I chose this
over (for example) a tar-ball in order to make tests run faster at the
small, hopefully amortized VCS cost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140999 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03 09:00:50 +00:00
Chandler Carruth 663abc976a Teach the logic for locating an installed GCC about the system root.
This requires fixing a latent bug -- if we used the default host triple
instead of an autodetected triple to locate GCC's installation, we
didn't go back and fix the GCC triple. Correct that with a pile of
hacks. This entire routine needs a major refactoring which I'm saving
for a subsequent commit. Essentially, the detection of the GCC triple
should be hoisted into the same routine as we locate the GCC
installation: the first is intrinsically tied to the latter. Then the
routine will just return the triple and base directory.

Also start to bring the rest of the library search path logic under
test, including locating crtbegin.o. Still need to test the multilib and
other behaviors, but there are also bugs in the way of that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140995 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03 08:02:58 +00:00
Chandler Carruth fde8d14ea3 Add initial support for applying the sysroot to library search paths.
This is still very much a WIP, but sysroot was completely broken before
this so we are moving closer to correctness.

The crux of this is that 'ld' (on Linux, the only place I'm touching
here) doesn't apply the sysroot to any flags given to it. Instead, the
driver must translate all the paths it adds to the link step with the
system root. This is easily observed by building a GCC that supports
sysroot, and checking its driver output.

This patch just fixes the non-multilib library search paths. We should
also use this in many other places, but first things first.

This also allows us to make the Linux 'ld' test independent of the host
system. This in turn will allow me to check in test tree configurations
based on various different distro's configuration. Again, WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140990 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03 06:41:08 +00:00
Chandler Carruth d2deee17ad Rework the selection of builtin library search paths on Linux to
precisely match the pattern and logic used by the GCC driver on Linux as
of a recent SVN checkout.

This happens to follow a *much* more principled approach. There is
a strict hierarchy of paths examined, first with multilib-suffixing,
second without such suffixing. Any and all of these directories which
exist will be added to the library search path when using GCC.

There were many places where Clang followed different paths, omitted
critical entries, and worst of all (in terms of challenges to debugging)
got the entries in a subtly wrong order.

If this breaks Clang on a distro you use, please let me know, and I'll
work with you to figure out what is needed to work on that distro. I've
checked the behavior of the latest release of Ubuntu, OpenSUSE, Fedora,
and Gentoo. I'll be testing it on those as well as Debian stable and
unstable and ArchLinux. I may even dig out a Slackware install.

No real regression tests yet, those will follow once I add enough
support for sysroot to simulate various distro layouts in the testsuite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140981 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03 05:28:29 +00:00
Chandler Carruth a9402e4b43 Simplify this through the power of the ternary operator.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140965 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-02 07:28:34 +00:00
Chandler Carruth bc0df72408 Consolidate the currently bizarre 32/64 multilib selection logic a bit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140964 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-02 07:06:48 +00:00
John McCall d1e40d5389 Make -fobjc-nonfragile-abi the -cc1 default, since it's the
increasingly prevailing case to the point that new features
like ARC don't even support the fragile ABI anymore.

This required a little bit of reshuffling with exceptions
because a check was assuming that ObjCNonFragileABI was
only being set in ObjC mode, and that's actually a bit
obnoxious to do.

Most, though, it involved a perl script to translate a ton
of test cases.

Mostly no functionality change for driver users, although
there are corner cases with disabling language-specific
exceptions that we should handle more correctly now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140957 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-02 01:16:38 +00:00
Chandler Carruth eb86b5b039 Revert r140604: "Let -B work for ld paths on Linux."
This patch may do what it describes, it may not. It's hard to tell as
its completely unclear what this is supposed to do. There are also no
test cases. More importantly, this seems to have broken lots of linker
invocations on multilib Linux systems.

The manual pages for 'ld' on Linux mention translating a '=' at the
beginning of the path into a *configure time* sysroot prefix (this is,
I believe, distinct from the --sysroot flag which 'ld' also can
support). I tested this with a normal binutils 'ld', a binutils 'ld'
with the sysroot flag enabled, and gold with the sysroot flag enabled,
and all of them try to open the path '=/lib/../lib32', No translation
occurs.

I think at the very least inserting an '=' needs to be conditioned on
some indication that it is supported and desired. I'm also curious to
see what toolchain and whan environment cause it to actually make
a difference.

I'm going to add a test case for basic sanity of Linux 'ld' invocations
from Clang in a follow-up commit that would have caught this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140908 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-01 00:37:35 +00:00
Daniel Dunbar 26e0b30455 Revert my --working-directory option, which wasn't well thought through.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140889 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-30 21:33:09 +00:00
David Chisnall 3c3ccd283f Remove the conditional that avoided passing the Objective-C runtime specification flags to cc1. This fixes PR10369 (__builtin_NSStringMakeConstantString() selecting the wrong runtime in C / C++ code and crashing, although it doesn't fix the problem that instantiating the Mac runtime for non-Darwin targets was crashing.)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140853 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-30 13:32:35 +00:00
Peter Collingbourne a95b9f6dab Driver: use correct search paths for multilib
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140782 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-29 13:42:24 +00:00
Benjamin Kramer 7ca268423c Driver: Fix two bad typos that were breaking the buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140682 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-28 05:33:02 +00:00
Chad Rosier 4f8de278b7 [driver] If no OSX or iOS target has been specified and we're compiling for
armv7, go ahead as assume we're targeting iOS.
rdar://10147774

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140668 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-28 00:46:32 +00:00
David Chisnall 5adcec16cb Check for GCC paths that have the target triple in them. This is required for a lot of cross-compile toolchains. Also add some slightly better support for -B.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140645 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-27 22:03:18 +00:00
David Chisnall 7f9b58b171 Let -B work for ld paths on Linux.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140604 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-27 13:31:58 +00:00
Akira Hatanaka 9f36062866 Make necessary changes in AddMIPSTargetArgs for targeting Mips64. Enable use of
-mcpu.
 






git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140562 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26 21:07:52 +00:00
David Blaikie d6471f7c19 Rename Diagnostic to DiagnosticsEngine as per issue 5397
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140478 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25 23:23:43 +00:00
Daniel Dunbar 51be75eccd Driver: Use sys::Process::SetWorkingDirectory, for consistency.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140434 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23 23:32:02 +00:00
Benjamin Kramer 5cca4eb629 Driver: Explicitly include <unistd.h>, libstdc++'s <map> pulls it in, libc++ doesn't.
Also, on windows, chdir seems to live in <direct.h>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140414 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23 21:03:19 +00:00
Daniel Dunbar 63bc59bf22 Driver: Add a --working-directory option which can be used to cause the compiler
to operate "as if" in a certain working directory.
 - For now, we just implement this by changing the actual working directory, but
   eventually we would want to handle this transparently. This is useful to
   avoid an extra exec() pair in some situations, and will be something we would
   want to support for more flexibility in using the Clang libraries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140409 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23 20:33:41 +00:00
David Blaikie eb2d1f1c88 Removing a bunch of dead returns/breaks after llvm_unreachables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140407 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23 20:26:49 +00:00
David Blaikie 548f6c8e80 More missing header inclusions from llvm_unreachable migration.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140369 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23 05:57:42 +00:00
David Blaikie b219cfc4d7 Switch assert(0/false) llvm_unreachable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140367 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23 05:06:16 +00:00
Benjamin Kramer 47adebef0d Add support for CPATH and friends.
This moves the existing code for CPATH into the driver and adds the environment lookup and path splitting there.
The paths are then passed down to cc1 with -I options (CPATH), added after the normal user-specified include dirs.
Language specific paths are passed via -LANG-isystem and the actual filtering is performed in the frontend.

I tried to match GCC's behavior as close as possible

Fixes PR8971.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140341 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-22 21:41:16 +00:00
Akira Hatanaka 7ec0258505 Add case labels for Mips64 architectures.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140226 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-21 02:13:07 +00:00
Bob Wilson 8aa76ea447 For i386 kext fallback to llvm-gcc, search paths for several Darwin versions.
This replaces the hack to read UNAME_RELEASE from the environment when
identifying the OS version on Darwin, and it's more flexible.  It's also
horribly ugly, but at least this consolidates the ugliness to touch less of
the code so that it will be easier to rip out later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140187 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-20 22:00:38 +00:00
Chad Rosier 61ab80a8b3 [driver] Default to arm mode when using the integrated assembler.
rdar://10125227

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140179 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-20 20:44:06 +00:00
Francois Pichet ae55608a29 As per discussion with Doug Gregor on the IRC channel, introduce a new compiler switch: -fms-compatility.
Microsoft specific tweaking will now fall into 2 categories:

    - fms-extension: Microsoft specific extensions that should never change the meaning of an otherwise well formed code. Currently map to LangOptions::Microsoft. (To be clearer, I am planning to change the name to LangOptions::MicrosoftExt).

    - fms-compatibility: Really a MSVC emulation mode. Map to LangOptions::MicrosoftMode. Can change the meaning of an otherwise standard conformant program.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139978 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-17 04:32:15 +00:00
Douglas Gregor 9bdbec17c3 Pass -fmodule-cache-path along to -cc1 properly
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139977 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-17 02:20:28 +00:00
Eli Friedman 733a83b324 Fix search paths for Ubuntu 11.04 x86. Patch by Stepan Dyatkovskiy.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139941 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-16 21:04:38 +00:00
Douglas Gregor fba18aa8f2 Add an experimental flag -fauto-module-import that automatically turns
#include or #import direcctives of framework headers into module
imports of the corresponding framework module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139860 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 22:00:41 +00:00
Douglas Gregor 8ee51ef211 Teach the driver to always pass down a module cache path. If none is
supplied, use something derived from the system's temporary
directory. Depends on LLVM r139725.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139726 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 20:28:46 +00:00
Chad Rosier 815eb6b807 [driver] Add support for the COMPILER_PATH environment variable, which adds the
specified path(s) to the list of prefix directories.
rdar://10097714

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139677 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 00:47:55 +00:00
John McCall 13db5cfc4e Treat the weak export of block runtime symbols as a deployment-target
feature akin to the ARC runtime checks.  Removes a terrible hack where
IR gen needed to find the declarations of those symbols in the translation
unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139404 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09 20:41:01 +00:00
Chad Rosier 4fe4d73bce [driver] i386 kext preprocessor jobs also need their unsupported options
filtered.  This happenis when -save-temps is specified. 
<rdar://problem/10088387>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139269 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-08 00:38:00 +00:00
Chad Rosier 46e3908af1 [driver] When clang crashes, don't try to generate diagnostics (i.e.,
preprocessor output) with multiple -arch options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139207 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-06 23:52:36 +00:00
Peter Collingbourne 41ee7a3717 Add the resource directory to the search path for Driver::GetFilePath,
as well as the search path printed by -print-search-dirs.

The main purpose of this change is to cause -print-file-name=include
to print the path to the include directory under Clang's resource
directory, instead of the system compiler's include directory, whose
header files Clang may not be able to parse.  Some build scripts will
do something like:
  $(CC) -nostdinc -I`$(CC) -print-file-name=include`
to exclude all header paths except the compiler's.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139127 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-06 02:08:31 +00:00
Fariborz Jahanian e3685fd4c2 default property synthesis is off by default
for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138958 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-01 20:23:17 +00:00
Fariborz Jahanian 4a04247099 objective-c: Make auto synthesis of properties the default.
This concludes //rdar://8843851


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138947 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-01 17:50:05 +00:00
Francois Pichet 8efcc0184a Enable -fdelayed-template-parsing by default on Win32.
I had to force -fno-delayed-template-parsing on some Index tests because delayed template parsing will change the output of some tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138942 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-01 16:38:08 +00:00
Rafael Espindola ab784085b7 Fix PR10744 by adding the toolchain path to the regular program path
and doing a simple search. Before we would manually check for the linker
before the -B options were searched.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138941 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-01 16:25:49 +00:00
Hans Wennborg 104087b59d Add 4.4.6 to GccVersions[] in lib/Driver/ToolChains.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138940 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-01 14:41:39 +00:00
Fariborz Jahanian 8697d308c1 objective-c: this patch (re)introduces objective-c's default property
synthesis. This new feature is currently placed under 
-fobjc-default-synthesize-properties option
and is off by default pending further testing.
It will become the default feature soon. 
// rdar://8843851


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138913 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-31 22:24:06 +00:00
Chad Rosier a488497c7c [driver] If no -miphoneos-version-min is specified on the command line *and*
IPHONEOS_DEPLOYMENT_TARGET if undefined, set -miphoneos-version-min based on 
isysroot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138892 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-31 20:56:25 +00:00
Eli Friedman b1f2f47820 Some minor updates to the Linux search path handling for Slackware. Patch by Will Dietz. PR10692.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138753 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-29 18:56:43 +00:00
Chad Rosier f43b5e84aa Cleanup r138662 per Ben and David's suggestions, thanks.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138670 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 22:27:02 +00:00
Chad Rosier ee99c8191c Make sure the std::string isn't deallocated prior to use. Many thanks to Eli
for catching this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138666 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 21:47:20 +00:00
Chad Rosier fe87fc73c0 [driver] When generating temporary files allow a prefix to be added. In many
cases we want the prefix to be the original file name less the suffix.  For an
input such as test.c to named temporary would be something like test-3O4Clq.o
Part of <rdar://problem/8314451>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138662 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 21:28:44 +00:00
Chad Rosier 807179763b [driver] Remove a few more options when clang invokes cc1plus for i386 kexts.
<rdar://problem/10027287>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138637 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 18:30:43 +00:00
Chad Rosier f59f5dab08 Take 2: Actually fix spacing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138617 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 00:49:52 +00:00
Chad Rosier 669cffa41a 80-column.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138614 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 00:44:04 +00:00
Chad Rosier 1b90605532 [driver] Add -mglobal-merge/-mno-global-merge machine options to enable/disable merging of
globals during codegen.
Fixes <rdar://problem/10017909>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138612 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 00:26:29 +00:00
Francois Pichet 805bc1f6fb revert 138610, accidental commit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138611 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 00:22:34 +00:00
Francois Pichet 0bb39319cf git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138610 91177308-0d34-0410-b5e6-96231b3b80d8 2011-08-26 00:18:13 +00:00
Chad Rosier fab83b5e7c [driver] Do not add -kext to the link command line when compiling with
-fapple-kext.
Fixes <rdar://problem/10013310>. Reverts <rdar://problem/7809940>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138564 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-25 17:33:03 +00:00
Eric Christopher f857186fd1 Add support for a verifier to the driver. Currently only verifies debug
output on darwin so is hard coded there.

As a note this will need a little bit of refactoring in the class
hierarchy to separate it out for different verifiers based on input type.

Fixes rdar://8256258.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138343 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-23 17:56:55 +00:00
Nico Weber 2fef11164c enable -fstack-protector on 10.5 for usermode binaries by default.
This matches gcc's behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138324 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-23 07:38:27 +00:00
Chad Rosier 6b0baf97dc Typo spotted by Ivan Krasin.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138200 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-20 06:56:17 +00:00
Eric Christopher 88b7cf00fc Add a completely hacky workaround for pch kext files with different extensions
when falling back to cc1plus for our compile.

rdar://9963920


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138017 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-19 00:30:14 +00:00
Chad Rosier 8722a5d483 Use StringRef, rather than C string APIs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137958 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-18 17:56:32 +00:00
Chad Rosier 7e9e74b0cc No seriously, remove the unsupported warning options.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137918 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-18 02:08:52 +00:00
Chad Rosier f01f8474e2 Fix off by one.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137915 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-18 01:23:31 +00:00
Chad Rosier 04225c1409 [driver] Implement in a more table-like manner and add many more warning options
that aren't handled by llvm-gcc on fallback.
Enhancement to rdar://9964354



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137912 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-18 01:18:28 +00:00
Eric Christopher 81ae90200a Add some more options that aren't handled by llvm-gcc on fallback.
This is going to be made a table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137907 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-18 00:26:15 +00:00
Chad Rosier 90c88023fd [driver] Don't generate diagnostics (i.e., preprocessed source) if reading
from stdin.  This allows Eli and the like to continue with their debugging 
trickery without loss of limb (or car) on my part. :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137906 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-18 00:22:25 +00:00
Chad Rosier 3060178ad9 Fix else style. No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137896 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17 23:08:45 +00:00
Eric Christopher 59f9b26bcb Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137893 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17 22:59:59 +00:00
Chad Rosier cc0de8c081 Fix iterator end for r137842.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137849 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17 18:51:56 +00:00
Chad Rosier 285f9a2847 [driver] Clang doesn't support -mkernel/-fapple-kext for i386, so it's
automatically invoking llvm-gcc's cc1plus, which doesn't support all options
supported by Clang.  Therefore, filter out unsupported options.
rdar://9964354


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137842 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17 18:24:55 +00:00
Eli Friedman cb6239ae97 Add additional path to Linux toolchain. Patch by Will Dietz. PR10690.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137839 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-17 18:17:26 +00:00
Bob Wilson faef9fcb41 Make -findirect-virtual-calls and -fterminated-vtables aliases of -fapple-kext.
Outside the driver, they were already treated that way, but the driver was not
giving them the same special treatment as -fapple-kext, e.g., falling back to
llvm-gcc for i386/Darwin kexts.  Radar 9868422.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137639 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-15 19:13:06 +00:00
Bob Wilson 0ac1ccc0f0 Remove duplicate option.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137638 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-15 19:13:02 +00:00
NAKAMURA Takumi 57c43a29f5 Fix "Uninitialized" warnings on g++-4.4.
In fact, they are false warnings but it seems g++-4.4 might be unable to know they must be false.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137568 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-14 00:37:22 +00:00
Bob Wilson a544aeece3 Reject -mkernel for i386/Darwin C++ code; fall back to llvm-gcc instead.
Since -mkernel implies -fapple-kext, this just extends the current behavior
for -fapple-kext to apply for -mkernel as well.  Radar 9933387.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137566 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-13 23:48:55 +00:00
Nico Weber cc52a0688f Add support of -x objc-cpp-output, -x objc++-cpp-output to the Driver.
Matches gcc, and is also required for using ccache with clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137563 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-13 23:13:37 +00:00
Chad Rosier b18d503bc9 [driver] Make sure to update the iterator end when erasing for Args.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137539 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12 23:38:19 +00:00
Chad Rosier 137a20b5f9 [driver] When generating clang failure diagnostics, don't try to preprocess
inputs that aren't preprocessable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137532 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12 23:30:05 +00:00
Chad Rosier 20fd867483 Return the proper type for objects when given a .o extension.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137531 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12 23:16:53 +00:00
Chad Rosier be69f60926 [driver] Refactor a bit to enable a few fixes when generating diagnostics. No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137524 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-12 22:08:57 +00:00
Chad Rosier 98fdfd30c9 If no -miphoneos-version-min specified, see if we can set the default based on
-isysroot.
rdar://9837120

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137075 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-08 23:39:34 +00:00
Chad Rosier aec8f4538d Improved efficiency by using iterator returned by erase, rather then restarting.
Thanks to David Blaikie for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137051 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-08 17:17:15 +00:00
Chad Rosier fc6142779f Fix cmake for r136702 (at least for the most part). Chandler has been kind
enough to offer to investigate the underlying issue.  Thanks to Doug for his
assistance as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136719 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-02 20:44:34 +00:00
Chad Rosier 4068eaaec4 Temporarily revert parts of r136702 to make cmake builds happy.
Someone with more cmake experience want to throw me a bone? :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136709 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-02 18:33:29 +00:00
Chad Rosier 2b81910618 When the compiler crashes, the compiler driver now produces diagnostic
information including the fully preprocessed source file(s) and command line 
arguments.  The developer is asked to attach this diagnostic information to a 
bug report.
rdar://9575623


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136702 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-02 17:58:04 +00:00
Chad Rosier 8c221b84ca Driver: When compiling i386 -fapple-kext code, we fallback to llvmgcc.
Unfortunately, llvmgcc doesn't always work when writing temporary output to
/dev/null.  Therefore, create a temp file that is later deleted.
rdar://9837692

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136644 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-01 19:58:48 +00:00
Douglas Gregor 65e02fa80e Introduce the "-index-header-map" option, to give special semantics
for quoted header lookup when dealing with not-yet-installed
frameworks. Fixes <rdar://problem/9824020>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136331 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28 04:45:53 +00:00
Chad Rosier 1fc1de48cd The -fapple-kext flag was designed to "do the right thing" for building code for
use in KEXTs. However, users/Xcode still need to tweak the linker flags to do 
the right thing, and end up using -Xlinker, for example.  Instead, have the 
driver "do the right thing" when linking when -fapple-kext is present on the 
command line, and we should have Xcode use -fapple-kext instead of setting other
flags like -Xlinker -kext or -nodefaultlibs.
rdar://7809940

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136294 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-27 23:36:45 +00:00
Chris Lattner 2d3ba4f5a9 Move ArrayRef to LLVM.h and eliminate now-redundant qualifiers, patch by Jon Mulder!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135855 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-23 17:14:25 +00:00
Francois Pichet 1c3199afb8 Unbreak the MSVC build, using namespace clang is required otherwise MSVC will not find raw_ostream.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135853 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-23 11:36:43 +00:00
Chris Lattner 5f9e272e63 remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
them into the clang namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-23 10:55:15 +00:00
Rafael Espindola 19d9d2ebbe Avoid warning on "clang -c -Dfoo test.i". Lines like these are created
when using ccache and libtool.m4 assumes that the compiler cannot print
warnings about options it knows about.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135723 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-21 23:40:37 +00:00
Chad Rosier d7a3ba03f6 Temporarily revert r135614 while I fix the cmake build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135621 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-20 21:16:17 +00:00
Chad Rosier 2da13b1595 When the compiler crashes, the compiler driver now produces diagnostic information
including the fully preprocessed source file(s) and command line arguments.  The 
developer is asked to attach this diagnostic information to a bug report.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135614 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-20 20:26:32 +00:00
Chad Rosier c57114ab9f If -ccc-host-triple i386-pc-win32-macho or -ccc-host-triple
x86_64-pc-win32-macho is used in conjunction with -no-integrated-as go ahead and
use the Darwin system assembler.
rdar://9785470


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135604 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-20 19:14:30 +00:00
Chris Lattner 686775deca now that we have a centralized place to do so, add some using declarations for
some common llvm types: stringref and smallvector.  This cleans up the codebase
quite a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135576 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-20 06:58:45 +00:00
Chris Lattner 9594675cc1 introduce a centralized place to introduce and inject llvm types into the
clang namespace.  There are a number of LLVM types that are used pervasively
and it doesn't make sense to keep qualifying them.  Start with casting
operators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135574 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-20 06:37:11 +00:00
Argyrios Kyrtzidis 7ee2049278 [arcmt] Add some additional driver flags to optionally emit or save the pre-migration ARC errors.
-arcmt-migrate-emit-errors : Emits the pre-migration ARC errors but it doesn't affect anything else
-arcmt-migrate-report-output : Writes out the pre-migration ARC errors to the provided plist file

rdar://9791454

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135491 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-19 17:20:03 +00:00
Joerg Sonnenberger 59c8457f01 Correctly handle sysroot prefix in -print-search-dirs. Makes libtool
more happy on NetBSD.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135344 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-16 10:50:05 +00:00
Chad Rosier 3e4d10917a Prevent the -save-temps flag from modifying the input file if the input filename
conflicts with a to be produced temp filename.
rdar://9724657

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135308 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-15 21:54:29 +00:00
Peter Collingbourne bb52786da8 Implement -MG. Fixes PR9613
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134996 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-12 19:35:15 +00:00
Argyrios Kyrtzidis 69325d5b7c [arcmt] Introduce new '-ccc-arcmt-migrate <path>' ARC migration driver option.
This is a new mode of migration, where we avoid modifying the original files but
we emit temporary files instead.

<path> will be used to keep migration process metadata. Currently the temporary files
that are produced are put in the system's temp directory but we can put them
in the <path> if is necessary.

Also introduce new ARC migration functions in libclang whose only purpose,
currently, is to accept <path> and provide pairs of original file/transformed file
to map from the originals to the files after transformations are applied.

Finally introduce the c-arcmt-test utility that exercises the new libclang functions,
update arcmt-test, and add tests for the whole process.

rdar://9735086.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134844 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-09 20:00:58 +00:00
Argyrios Kyrtzidis 72ac120023 [arcmt] Add -ccc-arcmt-check/-ccc-arcmt-modify driver option aliases.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134591 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07 04:00:39 +00:00
John McCall f1443bedeb Somehow the -fgnu-runtime option itself got lost in all that shuffling.
Restore it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134459 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06 02:36:30 +00:00
John McCall 256a76e0b0 Call objc_terminate() instead of abort() when a cleanup throws an
exception in Objective-C;  in Objective-C++ we still use std::terminate().
This is only available in very recent runtimes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134456 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06 01:22:26 +00:00
John McCall c06e074343 Missing header from last commit; accidental change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134455 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06 00:38:59 +00:00
John McCall 9f084a3166 Change the driver's logic about Objective-C runtimes: abstract out a
structure to hold inferred information, then propagate each invididual
bit down to -cc1.  Separate the bits of "supports weak" and "has a native
ARC runtime";  make the latter a CodeGenOption.

The tool chain is still driving this decision, because it's the place that
has the required deployment target information on Darwin, but at least it's
better-factored now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134453 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06 00:26:06 +00:00
Joerg Sonnenberger 5b2b89b3e8 Drop "soft" argument that would be considered as file argument by cc1.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134438 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05 19:52:46 +00:00
Douglas Gregor bcf6a8025a StringRef'ize clang::drive::Option::getName(), from Zach Wheeler!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134418 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05 16:56:25 +00:00
Chandler Carruth 37187cc455 Make the GCC version proliferation worse by N+1 for the sake of
ArchLinux. =/ Fixes PR10246.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134299 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-02 00:51:03 +00:00
Eli Friedman d18eecac71 Make clang behave in a gcc-compatible way in the presence of multiple flags for the same x86 target feature (e.g. -mno-sse -msse). gcc uses a somewhat unintuitive algorithm here in that the enabled SSE instructions is based on the order of the *last* flag for *each* feature-level, so that "-mno-sse -msse2" only enables SSE2, but "-mno-sse -msse2 -msse" enables all SSE levels.
Issue reported on cfe-dev.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134296 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-02 00:34:19 +00:00
Eric Christopher aa7333c860 Update for llvm commit r134291.
Fixes rdar://9714064


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134292 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-02 00:20:22 +00:00
Fariborz Jahanian 5d9b6bf9de Use existing -fcatch-undefined-behavior option,
replacing -freset-local-blocks. // rdar://9227352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134082 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29 18:41:17 +00:00
Fariborz Jahanian 1077e420b8 Under a compiler flag, -freset-local-blocks,
wipe out stack blocks when they go out of scope.
// rdar://9227352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134045 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28 23:51:26 +00:00
Daniel Dunbar 99ca47b21f Driver/Darwin: -force_load can be specified multiple times.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134025 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28 20:16:02 +00:00
Bill Wendling 3f4be6fb88 libprofile_rt may be installed as a dylib on Darwin.
If we cannot find the static library, use the dylib instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133926 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-27 19:15:03 +00:00
Dylan Noblesmith 89bb6146a8 fix autoconf build from r133710
Sorry! This commit worked in CMake, but
CXX_INCLUDE_ROOT is defined in a different
config.h for autoconf.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133715 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-23 13:50:47 +00:00
Eric Christopher 3404fe7105 Build and use libcompiler_rt whenever possible.
Patch by Jean-Daniel Dupas!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133624 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-22 17:41:40 +00:00
John McCall d71315c551 It is possible to request the nonfragile ABI with -fobjc-abi-version=2;
respect that when deciding whether -objc-exceptions implies the
-fexceptions -cc1 option.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133590 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-22 00:53:57 +00:00
Daniel Dunbar a68e1c398a Driver/Darwin: Fixup version check for -object_path_lto support.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133548 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21 21:18:32 +00:00
Bob Wilson 13c4f2144b Fix the default libc++ header search path to be sysrooted. Radar 9639692.
The -cxx-isystem path is not prefixed with the sysroot directory, so it's
not a good way for the driver to set the system default C++ search path.
Instead, add -stdlib as a cc1 option and teach the frontend how to find the
headers.  The driver can then just pass -stdlib through to "cc1".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133547 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21 21:12:29 +00:00
Daniel Dunbar 5bfa656e13 Driver/Darwin: When invoking the linker, automatically pass -object_path_lto so
that the linker has a place to put the temporary object file and can leave it
around (for the driver to clean up). This is important so that the object file
references in the debug info are preserved for possible use by dsymutil.
 - <rdar://problem/8294279> executable has no debug symbols when compiled with LTO

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133543 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21 20:55:11 +00:00
Daniel Dunbar ed798951b4 Driver: Factor out IsUsingLTO helper function.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133542 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21 20:55:08 +00:00
Joerg Sonnenberger 468eb7ddd6 Fix typo. From Damjan Marion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133511 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21 08:45:08 +00:00
Daniel Dunbar 2a45fa7cf6 Driver/Darwin: Honor -Xarch_FOO when the arch matches either the toolchain or
the architecture being bound.
 - Fixes things like -Xarch_armv7.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133490 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21 00:20:17 +00:00
Nick Lewycky c3b9014c72 Add support for -Wa,--noexecstack when building from a non-assembly file. For
an assembly file it worked correctly, while for a .c file it would given an
error about how --noexecstack is not a supported argument to -Wa.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133489 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21 00:14:18 +00:00
Argyrios Kyrtzidis c2e70b46b6 [arcmt] Remove '-arcmt-modify-in-memory', it turned out less useful than we hoped it would be.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133315 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-17 23:49:31 +00:00
Eli Friedman 7a883e3e17 Add support for -force_load flag, for compat with Apple gcc. rdar://9555962 .
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133218 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-16 23:59:43 +00:00
NAKAMURA Takumi c37039803a Be aware of (x86_64-redhat-linux6E-)g++44 on RHEL5.
AFAIK, RHEL5 (and its clones) provides g++44 as the package "gcc44-c++".
By default, g++-4.1.1 is available, though, its libstdc++ would not be suitable to clang++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133156 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-16 12:43:57 +00:00
John McCall 8f0e8d2296 The ARC Migration Tool. All the credit goes to Argyrios and Fariborz
for this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133104 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-15 23:25:17 +00:00
John McCall f85e193739 Automatic Reference Counting.
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.

Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-15 23:02:42 +00:00
Douglas Gregor 74da19fc3a Introduce a -cc1-level option to turn off related result type
inference, to be used (only) by the Objective-C rewriter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133025 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-14 23:20:43 +00:00
Douglas Gregor 4c4efee6d3 Eliminate the -f[no]objc-infer-related-result-type flags; there's no
reason to allow the user to control these semantics through a flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132919 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-13 16:42:53 +00:00
Douglas Gregor 926df6cfab Implement Objective-C Related Result Type semantics.
Related result types apply Cocoa conventions to the type of message
sends and property accesses to Objective-C methods that are known to
always return objects whose type is the same as the type of the
receiving class (or a subclass thereof), such as +alloc and
-init. This tightens up static type safety for Objective-C, so that we
now diagnose mistakes like this:

t.m:4:10: warning: incompatible pointer types initializing 'NSSet *'
with an
      expression of type 'NSArray *' [-Wincompatible-pointer-types]
  NSSet *array = [[NSArray alloc] init];
         ^       ~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:72:1:
note: 
      instance method 'init' is assumed to return an instance of its
      receiver
      type ('NSArray *')
- (id)init;
^

It also means that we get decent type inference when writing code in
Objective-C++0x:

  auto array = [[NSMutableArray alloc] initWithObjects:@"one",  @"two",nil];
  //    ^ now infers NSMutableArray* rather than id




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132868 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-11 01:09:30 +00:00
Chandler Carruth 169dd31c6c Revert "hack in my new variables for GCC"
Very sorry for the accidental commit of WIP code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132745 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-08 10:14:38 +00:00
Chandler Carruth 8afdd56bab hack in my new variables for GCC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132743 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-08 10:13:14 +00:00
Joerg Sonnenberger db6393f259 Sort -lgcc after -lgcc_s for NetBSD, otherwise shared libraries on i386
may pick it up. This would create bad text relocations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132736 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-07 23:39:17 +00:00
Benjamin Kramer 25a857b803 Toolchain support for Ubuntu Oneiric. Patch by Michael Wild!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132669 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-05 16:08:59 +00:00
Roman Divacky 000a6552ad Adjust the linker for PowerPC64/-m32 on FreeBSD too.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132635 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-04 07:40:24 +00:00
Roman Divacky 3393cef18e Make -m32 work on FreeBSD/PowerPC64.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132634 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-04 07:37:31 +00:00
Nick Lewycky 80df02592c On linux, -nostdlib was causing a --start-group with no --end-group to be passed
to the linker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132629 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-04 06:27:06 +00:00
Nick Lewycky 7e46d0b843 Identifiers with _CapitalLetter are reserved, so don't use them. Prefer the
common C++ pattern of using the same name for the constructor argument as you
do for the member. Noticed by inspection.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132626 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-04 05:19:42 +00:00
Rafael Espindola c7409a0005 We were looking at /usr/lib only if the distro had multilib. This is bogus:
we look in /usr/lib to find crt1.o, and that depends only on where libc
is installed.

This fixes the case of using a different gcc installation in a distro
without multilib.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132551 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-03 15:39:42 +00:00
Rafael Espindola 5a640efa55 Add support for centos.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132550 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-03 15:23:24 +00:00
Eric Christopher 9af535a011 80-col cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132543 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-03 13:28:31 +00:00
NAKAMURA Takumi 304ed3f81b Untabify and fix whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132531 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-03 03:49:51 +00:00
Rafael Espindola 14ea13cb5a We already have support for using c++ headers from a custom location.
Before this patch we would still link with the system libstdc++. It worked
fine most of the time, but would break if the used headers were a lot newer
than the system libraries.

This patch changes the driver to use the libraries corresponding to the
headers the user selected.

This fixes, for example, using 4.5 headers in a system with gcc 4.1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132497 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-02 22:18:46 +00:00