Commit Graph

4769 Commits

Author SHA1 Message Date
Daniel Dunbar d972e2247b Driver: Implement -print-search-dirs.
llvm-svn: 67362
2009-03-20 04:37:21 +00:00
Daniel Dunbar 03e0a4f324 Driver: Sketch Darwin tool chains.
llvm-svn: 67356
2009-03-20 00:57:52 +00:00
Daniel Dunbar 64ed5e3730 Driver: Add darwin::Lipo tool.
llvm-svn: 67355
2009-03-20 00:52:38 +00:00
Douglas Gregor 07d8e3a500 Allow flexible array initializers that are not surrounded by
braces. We now build the appropriate fully-structured initializer list
for such things. Per PR3618, verified that we're getting the right
code generation.

llvm-svn: 67353
2009-03-20 00:32:56 +00:00
Daniel Dunbar 59e5e880f3 Driver: Move tool chain implementations into ToolChains.cpp.
llvm-svn: 67350
2009-03-20 00:20:03 +00:00
Daniel Dunbar 1fc898c40a Driver: Temporary hack to allow -ccc-print-bindings to work (for
testing) even with -pipe on.

llvm-svn: 67348
2009-03-20 00:11:04 +00:00
Sebastian Redl 90b6edda75 Bindir and Win32 builds work, so switch to .inc files. Leave the .def files in the tree for a day or so longer.
llvm-svn: 67346
2009-03-19 23:18:26 +00:00
Ted Kremenek f9ccd5cdc2 Add PTHManager::getOriginalSourceFile(), a method that returns the name of the
original source file (if any) that was used to generate the PTH cache.

llvm-svn: 67343
2009-03-19 22:19:30 +00:00
Douglas Gregor 3731162ade Variables marked as "extern" can actually have internal linkage if
there is a previous declaration marked "static". This fixes PR3645.

llvm-svn: 67336
2009-03-19 22:01:50 +00:00
Douglas Gregor 19367f54e2 Allow notes to be printed following a fatal error, then suppress any
diagnostics following those notes. 

Make exceeding the template instantiation depth a fatal error.

Thanks to Daniel for pointing out the problem!

llvm-svn: 67320
2009-03-19 18:55:06 +00:00
Douglas Gregor 2797d32926 Add a clarifying comment about HasPrototype's computation
llvm-svn: 67316
2009-03-19 18:33:54 +00:00
Fariborz Jahanian d302bbd0c1 When looking for property name (or getter method) in a
dot-syntax expression after earching the list of protocols
in the qualified-id, must keep searching the protocol list
of each of the protocols in the list.

llvm-svn: 67314
2009-03-19 18:15:34 +00:00
Douglas Gregor 3729f240af If a function is declared as, e.g.,
F f;

where F is a typedef of a function type, then the function "f" has a
prototype. This is a slight tweak to Chris's suggested fix in
PR3817. Fixes PR3817 and PR3840.

llvm-svn: 67313
2009-03-19 18:14:46 +00:00
Daniel Dunbar 403c468065 Driver/clang: -mattr strings were not comma separated.
- Apologies for commits w/o test cases; they are coming.

llvm-svn: 67310
2009-03-19 17:36:04 +00:00
Douglas Gregor 90a1a65194 Introduce a new expression type, UnresolvedDeclRefExpr, that describes
dependent qualified-ids such as

  Fibonacci<N - 1>::value

where N is a template parameter. These references are "unresolved"
because the name is dependent and, therefore, cannot be resolved to a
declaration node (as we would do for a DeclRefExpr or
QualifiedDeclRefExpr). UnresolvedDeclRefExprs instantiate to
DeclRefExprs, QualifiedDeclRefExprs, etc.

Also, be a bit more careful about keeping only a single set of
specializations for a class template, and instantiating from the
definition of that template rather than a previous declaration. In
general, we need a better solution for this for all TagDecls, because
it's too easy to accidentally look at a declaration that isn't the
definition.

We can now process a simple Fibonacci computation described as a
template metaprogram.

llvm-svn: 67308
2009-03-19 17:26:29 +00:00
Daniel Dunbar 4e004ed124 IRgen support for alias of global variable.
- PR3818.

llvm-svn: 67297
2009-03-19 08:27:24 +00:00
Daniel Dunbar 8d6ab2afa6 Driver: Compilation::Execute wasn't returning result code correctly.
llvm-svn: 67296
2009-03-19 08:03:45 +00:00
Daniel Dunbar 1da82ae5bd Driver: Executing piped jobs with a single command is easy.
llvm-svn: 67295
2009-03-19 08:01:45 +00:00
Daniel Dunbar adc5c7c2fd Driver: Claim unused input arguments when emitting "input file unused"
diagnostic (to suppress more generic unused warning).

llvm-svn: 67294
2009-03-19 07:57:08 +00:00
Daniel Dunbar 2da027244d Driver: Claim -arch options when pipelining, and claim arguments that
are forwarded to GCC.
 - The later is unfortunate, as it prevents us from generally warning
   about anything interesting on platforms that use a generic
   toolchain. However, we can't do much better without significantly
   complicating things, and generally we should have proper tool chain
   definitions.

llvm-svn: 67293
2009-03-19 07:55:12 +00:00
Daniel Dunbar 5cdf3e0fb9 Driver: Handle "linker input" arguments.
- Make InputInfo a variant of filename, pipe, input argument,
   nothing.

 - Leave a FIXME in InputInfo that this should be revisited.

llvm-svn: 67292
2009-03-19 07:29:38 +00:00
Daniel Dunbar 0e227785cb Driver: Add Arg::renderAsInput; this is a messy area and something I
was hoping to clean up in the rewrite, but I don't see it yet.

llvm-svn: 67291
2009-03-19 07:22:40 +00:00
Douglas Gregor 975e6d0ccd Print the context of tag types as part of pretty-printing, e.g.,
struct N::M::foo

llvm-svn: 67284
2009-03-19 04:25:59 +00:00
Douglas Gregor 1835391025 Generalize printing of nested-name-specifier sequences for use in both
QualifiedNameType and QualifiedDeclRefExpr. We now keep track of the
exact nested-name-specifier spelling for a QualifiedDeclRefExpr, and
use that spelling when printing ASTs. This fixes PR3493.

llvm-svn: 67283
2009-03-19 03:51:16 +00:00
Ted Kremenek 842f858865 Plist diagnostics: distinguish between regular and extended messages for "events".
llvm-svn: 67269
2009-03-19 00:42:56 +00:00
Douglas Gregor e177b7254d Extend the use of QualifiedNameType to the creation of class template
specialization names. This way, we keep track of sugared types like

  std::vector<Real>

I believe we are now using QualifiedNameTypes everywhere we can. Next
step: QualifiedDeclRefExprs.

llvm-svn: 67268
2009-03-19 00:39:20 +00:00
Devang Patel ec4bad5093 Encode ivar access control info.
llvm-svn: 67267
2009-03-19 00:23:53 +00:00
Douglas Gregor 5253768ada Introduce a representation for types that we referred to via a
qualified name, e.g., 

  foo::x

so that we retain the nested-name-specifier as written in the source
code and can reproduce that qualified name when printing the types
back (e.g., in diagnostics). This is PR3493, which won't be complete
until finished the other tasks mentioned near the end of this commit.

The parser's representation of nested-name-specifiers, CXXScopeSpec,
is now a bit fatter, because it needs to contain the scopes that
precede each '::' and keep track of whether the global scoping
operator '::' was at the beginning. For example, we need to keep track
of the leading '::', 'foo', and 'bar' in
 
  ::foo::bar::x

The Action's CXXScopeTy * is no longer a DeclContext *. It's now the
opaque version of the new NestedNameSpecifier, which contains a single
component of a nested-name-specifier (either a DeclContext * or a Type
*, bitmangled). 

The new sugar type QualifiedNameType composes a sequence of
NestedNameSpecifiers with a representation of the type we're actually
referring to. At present, we only build QualifiedNameType nodes within
Sema::getTypeName. This will be extended to other type-constructing
actions (e.g., ActOnClassTemplateId).

Also on the way: QualifiedDeclRefExprs will also store a sequence of
NestedNameSpecifiers, so that we can print out the property
nested-name-specifier. I expect to also use this for handling
dependent names like Fibonacci<I - 1>::value.

llvm-svn: 67265
2009-03-19 00:18:19 +00:00
Ted Kremenek 891642e4da Fix PR 3836 by eagerly assuming symbolic constraints returned by unary '!'.
llvm-svn: 67260
2009-03-18 23:49:26 +00:00
Gabor Greif 5e09283e5a Use the instantiated expressions to build the ConditionalOperator. This addresses the second part of review feedback.
llvm-svn: 67259
2009-03-18 23:47:39 +00:00
Daniel Dunbar 7ef5ed6c16 Driver: Fix bug in translating -O to clang, add clang-translation test
case.

llvm-svn: 67257
2009-03-18 23:39:35 +00:00
Daniel Dunbar 483693941c Driver: Resolve program path for "cp" (used as part of transparent gcc
PCH support).

llvm-svn: 67256
2009-03-18 23:34:15 +00:00
Daniel Dunbar c4acf9d516 Driver: Forcibly disable pipe support until we can execute them, the
driver is functional without them.

llvm-svn: 67254
2009-03-18 23:18:19 +00:00
Daniel Dunbar 18d69de523 Driver: Delete the temporary files llvm::sys::Path::makeUnique
sometimes leaves around.

llvm-svn: 67253
2009-03-18 23:08:52 +00:00
Mike Stump 1a0d5707af Make -j8 safe.
llvm-svn: 67252
2009-03-18 22:53:10 +00:00
Daniel Dunbar 64316c49a6 Driver: Execute jobs; no pipe support yet.
llvm-svn: 67250
2009-03-18 22:44:24 +00:00
Fariborz Jahanian 3654e65adf objc: Implemented variables declared in class interface
whose sema decl is at the translation unit.

llvm-svn: 67249
2009-03-18 22:33:24 +00:00
Daniel Dunbar 6c17bfd99b Driver: Cleanup temporary/result files.
llvm-svn: 67248
2009-03-18 22:16:03 +00:00
Ted Kremenek b36e01d87e Fix crash reported in <rdar://problem/6695527>. We now have
SVal::GetRValueSymbolVal do the checking if we can symbolicate a type instead of
having BasicStoreManager do it (which wasn't always doing the check
consistently). Having this check in SVal::GetRValueSymbolVal keeps the check in
one centralized place.

llvm-svn: 67245
2009-03-18 22:10:22 +00:00
Daniel Dunbar 6f66877ebf Driver: Lookup program names using llvm::sys::Program::FindProgramByName
if our usual methods fail. This isn't necessary for running the tool,
but improves the accuracy of logging output.

Also, have GCC tools lookup gcc program path.

llvm-svn: 67243
2009-03-18 21:34:08 +00:00
Mike Stump fc17674d6b The eventual name of this will be clang, might as well start now.
llvm-svn: 67241
2009-03-18 21:19:11 +00:00
Chris Lattner d14705b9b4 silence some errors that should not apply to .S files on code like:
''
   '
 '

llvm-svn: 67237
2009-03-18 21:10:12 +00:00
Chris Lattner 2d17ab783b when preprocessing a .S file, unknown directives should just be passed through,
and the token after the # should be expanded if it is not a valid directive.
This allows us to transform things like:

#define FOO BAR
# FOO

into # BAR, even though FOO is not normally expanded for directives.

This should fix PR3833

llvm-svn: 67236
2009-03-18 21:00:25 +00:00
Chris Lattner 2534324a4e properly form a full token for # before calling HandleDirective.
llvm-svn: 67235
2009-03-18 20:58:27 +00:00
Chris Lattner 5eb8ae2453 This is not considered a preprocessor directive in .S files:
# 4 

llvm-svn: 67233
2009-03-18 20:41:10 +00:00
Chris Lattner 5def81401f constructs like:
#define Y X ## .
Y

are ok in .S files.

llvm-svn: 67231
2009-03-18 20:31:57 +00:00
Daniel Dunbar 68b01a03ba Driver: Support ToolChain specific path lists to search for files and
programs.

llvm-svn: 67229
2009-03-18 20:26:19 +00:00
Gabor Greif 8c97d18445 incorporate review comment (about the optimization when we have a non-typedependent expression)
llvm-svn: 67226
2009-03-18 20:12:58 +00:00
Mike Stump 25d1dc2a20 Move generated file to ObjDir.
llvm-svn: 67225
2009-03-18 20:12:50 +00:00
Daniel Dunbar c230443178 PR3835: Interaction with ABI structure passing can inhibit
readnone/readonly attributes.

llvm-svn: 67224
2009-03-18 19:51:01 +00:00
Daniel Dunbar e627c1cc0f Driver: Construct temporary file names.
- This is still suboptimal, but should at least be workable.

llvm-svn: 67223
2009-03-18 19:34:39 +00:00
Mike Stump 1dca7c0061 Add revision information.
llvm-svn: 67220
2009-03-18 18:45:55 +00:00
Chris Lattner ab17fb2c98 fix the more complex cases by actually codegen'ing the right expr :)
llvm-svn: 67219
2009-03-18 18:30:44 +00:00
Chris Lattner 28bcf1a429 add codegen support for casting an element to a union.
There are some more complex cases (_Complex and structs)
that I'm still working on.

llvm-svn: 67218
2009-03-18 18:28:57 +00:00
Daniel Dunbar d175d9753b Driver: Don't warn about unused arguments if there are Driver errors
(brings code in line with diagnostic.

llvm-svn: 67217
2009-03-18 18:03:46 +00:00
Gabor Greif 3db2902f02 simplify logic, isInvalid check is redundant
llvm-svn: 67216
2009-03-18 17:53:25 +00:00
Mike Stump 367fee6664 Be sure to not add weak import, if we are ignoring it.
llvm-svn: 67214
2009-03-18 17:39:31 +00:00
Mike Stump bc7d67ce08 Add codegen support for aggregate BlockDeclRefExprs.
llvm-svn: 67207
2009-03-18 15:54:29 +00:00
Mike Stump 3b79d59be7 Fix URL trimming for version information.
llvm-svn: 67206
2009-03-18 15:19:35 +00:00
Mike Stump 38cae30095 Ignore weak import on properties.
llvm-svn: 67205
2009-03-18 15:05:17 +00:00
Mike Stump 02537142c1 Improve version number.
llvm-svn: 67204
2009-03-18 14:00:02 +00:00
Daniel Dunbar a2aedc6943 Driver: Port Clang argument translation.
llvm-svn: 67193
2009-03-18 10:01:51 +00:00
Daniel Dunbar e6c8319943 Driver: Bug fix, derived .gch names sometimes started with "/".
llvm-svn: 67192
2009-03-18 09:58:30 +00:00
Daniel Dunbar 7591f29f7c Driver: Add argument translation utilities to ArgList.
- Support things like telling which -ffoo -fno-foo option won, and
   forwarding all arguments matching a certain set of options to the
   tool.

llvm-svn: 67189
2009-03-18 09:29:36 +00:00
Daniel Dunbar a3246a0638 Driver: Lift out common GCC tool and implement generic GCC tool
argument translation.

Also, stub out clang tool implementation a bit more.

llvm-svn: 67185
2009-03-18 08:07:30 +00:00
Daniel Dunbar dcd05482bd Driver: Add assert and FIXME; arguments which act as linker inputs
(e.g., -filelist) are currently broken.

llvm-svn: 67183
2009-03-18 08:02:40 +00:00
Daniel Dunbar 8eba365d36 Driver: Provide Arg::render implementations.
llvm-svn: 67182
2009-03-18 08:01:48 +00:00
Daniel Dunbar 4b6058e33a Driver: Add "d" flag to Options.def for options which are completely
handled by driver. 
 - This is not very precise, we use it to drive the "forward-to-gcc"
   predicate, when trying to talk to a generic gcc tool.

 - Slightly better than what ccc was doing, and should be good
   enough. Platforms which want a robust driver should implement a
   proper tool chain.

llvm-svn: 67181
2009-03-18 08:01:15 +00:00
Daniel Dunbar 04c4c2c3db Driver: ConstructJob also needs to know the destination (where to put
its commands).

llvm-svn: 67179
2009-03-18 07:06:02 +00:00
Daniel Dunbar 3beceaf7f1 Driver: Print version on stderr to match [gc]cc.
llvm-svn: 67178
2009-03-18 06:51:03 +00:00
Daniel Dunbar 0928b3125c Driver: Implement -### (hard to tell, since we don't actually
construct any jobs).

llvm-svn: 67177
2009-03-18 06:49:39 +00:00
Daniel Dunbar 2b4bda8073 Driver: Claim inputs when we bind the InputAction.
llvm-svn: 67174
2009-03-18 06:21:12 +00:00
Daniel Dunbar e4197f6203 Driver: Rename Command::Argv to Command::Arguments to make it clearer
that this does not include the implicit first argument (the executable
name).

llvm-svn: 67172
2009-03-18 06:13:37 +00:00
Daniel Dunbar bcd775b436 Driver: Don't claim inputs when pipelining, a tool should eventually
claim these.

llvm-svn: 67171
2009-03-18 06:09:38 +00:00
Daniel Dunbar 0450e6dc4c Driver: Add a dash of const.
llvm-svn: 67170
2009-03-18 06:07:59 +00:00
Daniel Dunbar 1a093d2049 Driver: Stub out Tool::ConstructJob.
llvm-svn: 67169
2009-03-18 06:00:36 +00:00
Daniel Dunbar aabaac4743 Driver: Fix Compilation::getArgsForToolChain, local variable was
shadowing member.

llvm-svn: 67167
2009-03-18 05:58:45 +00:00
Daniel Dunbar 1197adcbf1 Driver: Add two normalizations for powerpc.
- PR3830

llvm-svn: 67166
2009-03-18 04:41:46 +00:00
Chris Lattner c2a0b97950 fix PR3809, codegen for inc/dec of function pointers.
llvm-svn: 67165
2009-03-18 04:25:13 +00:00
Chris Lattner 63d06ab65a teach codegen to handle noop casts as lvalues.
llvm-svn: 67164
2009-03-18 04:02:57 +00:00
Daniel Dunbar dc78bd9f79 Fix -E mismatch; an identifier followed by a numeric constant does not
require a space (to avoid concatenation) if the numeric constant had a
leading period.
 - PR3819.

llvm-svn: 67163
2009-03-18 03:32:24 +00:00
Daniel Dunbar eb843bedf9 Driver: Ditch Driver::DefaultToolChain, this can vary between compilations.
llvm-svn: 67162
2009-03-18 03:13:20 +00:00
Daniel Dunbar 896cb66166 Driver: I was too hasty in free'ing Actions, we sometimes share
Actions so a simple tree traversal isn't quite good enough. Leaving a
FIXME for now.

llvm-svn: 67161
2009-03-18 03:02:22 +00:00
Daniel Dunbar 06d918c2f4 Driver: Initialize Arg::Claimed
llvm-svn: 67160
2009-03-18 02:57:50 +00:00
Daniel Dunbar f0eddb8510 Driver: Move actions into Compilation, and construct the compilation
earlier.

 - This gives us a simple ownership model, and allows clients access
   to more information should they ever want it.

 - We now free Actions correctly.

llvm-svn: 67158
2009-03-18 02:55:38 +00:00
Daniel Dunbar d00978bc0d Driver: Add test for binding of precompile; exposed bug due to my
flawed idea that llvm::sys::Path::getBasename was a version of
basename().

llvm-svn: 67153
2009-03-18 02:00:31 +00:00
Zhongxing Xu 17299e6172 Use a work list to recursively build up the subregion mapping, and mark live
var region roots.

llvm-svn: 67152
2009-03-18 01:54:31 +00:00
Daniel Dunbar 338d74898c Driver: Implement JoinedAndSeparateArg::getValue and add parsing test
case.

llvm-svn: 67151
2009-03-18 01:48:37 +00:00
Daniel Dunbar 6965c2b113 Driver: UnknownHostInfo was always returning 0.
llvm-svn: 67150
2009-03-18 01:39:08 +00:00
Daniel Dunbar 2608c548b5 Driver: Use PrettyStackTrace.
llvm-svn: 67149
2009-03-18 01:38:48 +00:00
Gabor Greif 68cfd78375 cleanup instantiation code, tighten testcase
llvm-svn: 67148
2009-03-18 01:16:08 +00:00
Daniel Dunbar 0160172228 Driver: Release Host, ToolChain, and Tool implementations.
llvm-svn: 67146
2009-03-18 01:09:40 +00:00
Gabor Greif 8af7837b08 instantiate ?: expressions
llvm-svn: 67145
2009-03-18 00:55:04 +00:00
Douglas Gregor 6bfde496ee The scope representation can now be either a DeclContext pointer or a
Type pointer. This allows our nested-name-specifiers to retain more
information about the actual spelling (e.g., which typedef did the
user name, or what exact template arguments were used in the
template-id?). It will also allow us to have dependent
nested-name-specifiers that don't map to any DeclContext.

llvm-svn: 67140
2009-03-18 00:36:05 +00:00
Daniel Dunbar 389fe1f563 Driver: Add test case for -ccc-clang-archs (which, it turns out, was
inverted).

llvm-svn: 67135
2009-03-18 00:12:31 +00:00
Chris Lattner 441914ea5b pull a nested conditional + comment out into its own variable,
no functionality change.

llvm-svn: 67128
2009-03-17 23:17:04 +00:00
Chris Lattner 9363e3106e don't crash when sentinel attribute is used on function without a prototype,
discovered as part of PR3817

llvm-svn: 67127
2009-03-17 23:03:47 +00:00
Chris Lattner 7440dcb53e Fix Type::getDesugaredType() to remove all direct sugar on
a type.  For example, if we have a typedef of a typeof of 
int, we strip all the say down to int.  This allows us to
simplify the getAs* methods, and is the first step towards
fixing PR3817

llvm-svn: 67126
2009-03-17 22:51:02 +00:00
Daniel Dunbar b39cc52eda Driver: Add -ccc-print-bindings option (for testing); the Python
driver has no corresponding option.

llvm-svn: 67125
2009-03-17 22:47:06 +00:00
Daniel Dunbar 82116f8df4 Driver: Add name to Tool (for testing/debugging) and move GCC_* tools
into gcc:: namespace.

llvm-svn: 67120
2009-03-17 22:45:24 +00:00
Ted Kremenek 211094d793 Stub out some code for support for NSDeallocateObject. This is enabled yet until
we resolve the semantics of this function when GC is enabled.

llvm-svn: 67116
2009-03-17 22:43:44 +00:00
Chris Lattner f568f8c889 GCC 4.0 isn't happy with VISIBILITY_HIDDEN on a namespace.
llvm-svn: 67112
2009-03-17 22:24:01 +00:00
Daniel Dunbar 15abb2ee0e Driver: GCC 4.0 isn't happy with VISIBILITY_HIDDEN on a namespace.
llvm-svn: 67110
2009-03-17 22:18:43 +00:00
Daniel Dunbar 5903d8c08a Driver: Stub out generic GCC tool selection (missed a file)
llvm-svn: 67109
2009-03-17 22:07:58 +00:00
Daniel Dunbar 04cb029e0b Driver: Stub out generic GCC tool selection.
llvm-svn: 67108
2009-03-17 22:07:31 +00:00
Daniel Dunbar 0a248bb5c2 Driver: Stub out generic GCC tool chain implementation.
llvm-svn: 67107
2009-03-17 21:38:00 +00:00
Daniel Dunbar 71bdee6ea1 Driver: Make sure to get the default arch name from the tool chain, not the
host; the toolchain may differ based on command line arguments.

llvm-svn: 67106
2009-03-17 21:29:52 +00:00
Daniel Dunbar 7a70c5ddbf Driver: Pass HostInfo reference into ToolChain.
llvm-svn: 67105
2009-03-17 21:21:26 +00:00
Douglas Gregor d7e7a51797 Refactor instantiation of declarations within a template into a much
cleaner visitor framework.

Added a visitor for declarations, which is quite similar to the
visitor for statatements.

llvm-svn: 67104
2009-03-17 21:15:40 +00:00
Daniel Dunbar 52e0c70868 Driver: Pass Driver reference down into Host info, which will need it
to pass to ToolChains, which may need Driver specific information (for
example, to form search paths).

llvm-svn: 67102
2009-03-17 20:45:45 +00:00
Daniel Dunbar 62ca7d23ce Driver: Fix typo ArgList destructor.
llvm-svn: 67101
2009-03-17 20:44:29 +00:00
Ted Kremenek ea072e3cae retain/release checker: Add support for reasoning about -dealloc.
llvm-svn: 67094
2009-03-17 19:42:23 +00:00
Douglas Gregor 954f6b27da Implement instantiation of enums within class templates. This isn't
quite as great as it sounds, because, while we can refer to the
enumerator values outside the template, e.g.,

  adder<long, 3, 4>::value

we can't yet refer to them with dependent names, so no Fibonacci
(yet). 

InstantiateClassTemplateSpecialization is getting messy; next commit
will put it into a less-ugly state.

llvm-svn: 67092
2009-03-17 19:05:46 +00:00
Daniel Dunbar b42a26c0a5 Driver: Hide HostInfo implementations.
- Also, normalize arch names a tad and stub out getToolChain
   implementations.

llvm-svn: 67091
2009-03-17 19:00:50 +00:00
Daniel Dunbar c1b70b2039 Driver: Add two option form of ArgList::getLastArg.
llvm-svn: 67090
2009-03-17 18:51:42 +00:00
Daniel Dunbar 7a178a40a1 Driver: Add logic for computing where to put job outputs (pipe,
temporary file, user provided name, derived name).

llvm-svn: 67088
2009-03-17 17:53:55 +00:00
Daniel Dunbar 527e2b3f8c Add ArgList::MakeArgString and make ArgList::Make* const.
- Slightly strange, but the idea is that the ArgList data structure
   is primarily a list of arguments; we want to allow clients to still
   add argument strings to an ArgList to avoid worrying about string
   lifetimes (or unnecessary string copying).

llvm-svn: 67086
2009-03-17 17:51:18 +00:00
Gabor Greif 31a082fd7a typo
llvm-svn: 67081
2009-03-17 11:39:38 +00:00
Anders Carlsson e73e3ecc04 Initialize the cleanup.dst variable if necessary. Fixes PR3789.
llvm-svn: 67075
2009-03-17 05:53:35 +00:00
Daniel Dunbar 6865a9e975 Fix unused variable warning in -Asserts mode.
llvm-svn: 67073
2009-03-17 04:12:06 +00:00
Anders Carlsson 4916c466da Handle ImplicitCastExprs when instantiating templates.
llvm-svn: 67063
2009-03-17 00:28:02 +00:00
Devang Patel bd93351c42 Fix struct field's debug info.
llvm-svn: 67062
2009-03-16 23:47:53 +00:00
Douglas Gregor 9fa1ab7d0c Fix a problem noticed by Anders, where we were creating
IntegerLiterals during instantiation when we should be creating either
a boolean literal (CXXBoolLiteralExpr) or a character literal
(CharacterLiteral).

llvm-svn: 67061
2009-03-16 23:35:25 +00:00
Sebastian Redl 0f8b23f71f Almost complete implementation of rvalue references. One bug, and a few unclear areas. Maybe Doug can shed some light on some of the fixmes.
llvm-svn: 67059
2009-03-16 23:22:08 +00:00
Douglas Gregor 23d75bb326 Build system changes to use TableGen to generate the various
diagnostics. This builds on the patch that Sebastian committed and
then revert. Major differences are:

  - We don't remove or use the current ".def" files. Instead, for now,
    we just make sure that we're building the ".inc" files.
  - Fixed CMake makefiles to run TableGen and build the ".inc" files
    when needed. Tested with both the Xcode and Makefile generators
    provided by CMake, so it should be solid.
  - Fixed normal makefiles to handle out-of-source builds that involve
    the ".inc" files.

I'll send a separate patch to the list with Sebastian's changes that
eliminate the use of the .def files.

llvm-svn: 67058
2009-03-16 23:06:59 +00:00
Anders Carlsson 6caa9dd693 Check signedness of bitfield sizes.
llvm-svn: 67045
2009-03-16 18:19:21 +00:00
Daniel Dunbar e75d834c7c Driver: Implement majority tool binding logic.
- Still need code for determining proper output location.

 - Doesn't work yet, of course, as the host isn't providing real
   tool chains.

 - Interface still has a few warts, but has gotten a nice bit of
   polish during the rewrite.

llvm-svn: 67038
2009-03-16 06:56:51 +00:00
Daniel Dunbar 3ce436d229 Driver: Migrate some data into the Compilation; after pipelining
access to most data should go through the current Compilation, not the
Driver (which shouldn't be specialized on variables for a single
compilation).

llvm-svn: 67037
2009-03-16 06:42:30 +00:00
Daniel Dunbar 9e2136d930 Driver: Sketch Tool and ToolChain classes.
llvm-svn: 67036
2009-03-16 05:25:36 +00:00
Sebastian Redl ed0f3b021e Parser support for rvalue references.
llvm-svn: 67033
2009-03-15 22:02:01 +00:00
Anders Carlsson 5bd30395b9 (Hopefully) instantiate dependent array types correctly.
llvm-svn: 67032
2009-03-15 20:12:13 +00:00
Anders Carlsson 27de6a5e91 Handle static_asserts when instantiating structs.
llvm-svn: 67031
2009-03-15 18:44:04 +00:00
Anders Carlsson a39058118b Add the ability to clone integer and string literals. Use it when instantiating template expressions.
llvm-svn: 67030
2009-03-15 18:34:13 +00:00
Sebastian Redl 6d4256c3c1 Convert a bunch of actions to smart pointers, and also bring PrintParserCallbacks a bit more in line with reality.
llvm-svn: 67029
2009-03-15 17:47:39 +00:00
Douglas Gregor afd7c9c855 Fix bitfield-instantiation ownership bug noticed by Anders
llvm-svn: 67028
2009-03-15 17:43:26 +00:00
Anders Carlsson 78e2bc0328 Make sure to release the expressions.
llvm-svn: 67027
2009-03-15 17:35:16 +00:00
Daniel Dunbar 27a08fab6b Add note on theoretical IRgen improvement.
llvm-svn: 67024
2009-03-15 06:39:56 +00:00
Daniel Dunbar 64895a0703 Remove a FIXME.
llvm-svn: 67022
2009-03-15 06:05:20 +00:00
Daniel Dunbar 2e8536cfaa Only intptr_t is protected by __intptr_t_defined.
llvm-svn: 67018
2009-03-15 03:16:47 +00:00
Daniel Dunbar 02ae54c549 Driver: claim input arguments when building phases.
llvm-svn: 67016
2009-03-15 01:40:22 +00:00
Daniel Dunbar adc91e6597 Driver: Start warning about unused arguments.
- This has a number of current flaws, enabling now to flush out
   problems while bringing up other parts.

llvm-svn: 67015
2009-03-15 01:38:15 +00:00
Daniel Dunbar ae0e55eb7f Driver: Update ArgList::{hasArg,getLastArg} to optionally claim the
arguments if they exist.

llvm-svn: 67014
2009-03-15 00:48:16 +00:00
Sebastian Redl 4ae9b126fe Revert the switch to the tablegen diags. It fails for seperate objdir builds and cmake builds, and I have no clue what to do about it. Revisit this after someone with a clue about the build systems has looked at it.
llvm-svn: 67009
2009-03-14 15:58:54 +00:00
Sebastian Redl 51e037e3c4 Switch diagnostics from .def to tablegen files. Please validate the Windows build.
llvm-svn: 67007
2009-03-14 12:00:12 +00:00
Anders Carlsson 54b2698587 Handle dependent types/exprs in static_assert expressions.
llvm-svn: 66997
2009-03-14 00:33:21 +00:00
Ted Kremenek d0fa573a7d Remove dead DeclarationName constructors that involving knowing about the
internal implementation of Selector.

llvm-svn: 66996
2009-03-14 00:27:40 +00:00
Anders Carlsson 5bbe1d7ba7 More static_assert work. Check that the assert expr is valid and show an error if it's false. Create the declaration and add it to the current context.
llvm-svn: 66995
2009-03-14 00:25:26 +00:00
Douglas Gregor 52aba87df7 Check for overflow and signedness problems with template
arguments. Eliminates a FIXME.

llvm-svn: 66993
2009-03-14 00:20:21 +00:00
Ted Kremenek 9a46804ca8 Make Selector::getIdentifierInfo() private. I took a first attempt at this last
week in:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090302/013580.html

That patch caused the output of the diagnostics to change. Since
'DeclarationName' can already reason about Selectors and the Diagnostics logic
reasons about DeclarationName, there is no additional code needed to get the
diagnostics working by making Selector::getIdentifierInfo() private.

llvm-svn: 66992
2009-03-14 00:20:08 +00:00
Douglas Gregor 69bd16d814 Make sure that the canonical representation of integral template arguments uses the bitwidth and signedness of the template parameter
llvm-svn: 66990
2009-03-14 00:03:48 +00:00