Ted Kremenek
b294d196b3
analyzer: Provide temporary workaround for false positive reported by
...
<rdar://problem/6704930> involving SimpleConstraintManager not reasoning well
about symbolic constraint values involving arithmetic operators.
llvm-svn: 67534
2009-03-23 17:10:25 +00:00
Douglas Gregor
d6b05f705b
Tighten up the determination of whether a function declaration has a
...
prototype. Thanks Eli!
llvm-svn: 67533
2009-03-23 16:26:51 +00:00
Douglas Gregor
d4eca014e0
Thanks to Eli for pointing out my misreading of 6.2.2p5
...
llvm-svn: 67530
2009-03-23 16:17:01 +00:00
Daniel Dunbar
76ce7416ae
Driver: Setup file and program search paths in tool chains.
...
llvm-svn: 67529
2009-03-23 16:15:50 +00:00
Daniel Dunbar
c53305fd42
Ad FreeBSD ARM target info.
...
- Patch by Ed Schoeten!
llvm-svn: 67527
2009-03-23 16:09:04 +00:00
Ted Kremenek
c7fef2ad53
analyzer: Fix embarrassing regression in BasicStore when invalidating struct
...
values passed-by-reference to unknown functions.
llvm-svn: 67519
2009-03-23 15:42:58 +00:00
Eli Friedman
449fe54cff
Minor Evaluate cleanup; add some boilerplate implementations to
...
Evaluate for __extension__ and __builtin_choose_expr.
llvm-svn: 67506
2009-03-23 04:56:01 +00:00
Eli Friedman
6400433980
Minor enhancements to Evaluate.
...
llvm-svn: 67503
2009-03-23 04:38:34 +00:00
Eli Friedman
31a20d680a
Some minor fixes for complex IRGen.
...
llvm-svn: 67501
2009-03-23 04:08:46 +00:00
Eli Friedman
7b4716750b
Fix a subtle bug in CodeGen for the increment of a bitfield.
...
llvm-svn: 67499
2009-03-23 03:00:06 +00:00
Eli Friedman
ba961a920a
Add some FIXMEs relating to incomplete types.
...
llvm-svn: 67497
2009-03-23 00:24:07 +00:00
Sebastian Redl
3b27be6ceb
Recognize rvalue references in C++03, but complain about them. This leads to far better error recovery.
...
llvm-svn: 67495
2009-03-23 00:00:23 +00:00
Eli Friedman
80160bd483
Partial implementation of PR3342: break out pointer sign
...
incompatibilities in assignments from other pointer incompatibilities.
Based off of the patch in PR3342. (This doesn't implement -Wno-pointer-sign,
but I don't know the driver code very well.)
llvm-svn: 67494
2009-03-22 23:59:44 +00:00
Daniel Dunbar
a0c89be9cc
Driver: Drop code for checking bounds in SeparateArg::render, this
...
situation should never occur now that arguments are parsed correctly.
llvm-svn: 67493
2009-03-22 23:50:14 +00:00
Sebastian Redl
b28b407121
Disallow catching exceptions by rvalue reference.
...
llvm-svn: 67492
2009-03-22 23:49:27 +00:00
Eli Friedman
e8dd7b3228
Adjust isModifiableLvalue to give a slightly more useful diagnostic for
...
attempting to illegally modify a BlockDeclRefExpr.
llvm-svn: 67491
2009-03-22 23:26:56 +00:00
Daniel Dunbar
d8500f3b0f
Driver: Implement 'missing argument' error.
...
llvm-svn: 67490
2009-03-22 23:26:43 +00:00
Eli Friedman
7fa3faa417
Fix code to mark block variables as const to actually work. Fix
...
isObjCObjectPointerType to work with qualified types. Adjust test for
changes.
If the SemaExpr changes are wrong or break existing code, feel free to
delete the "ExprTy.addConst();" line and revert my changes to
test/Sema/block-literal.c.
llvm-svn: 67489
2009-03-22 23:00:19 +00:00
Sebastian Redl
e97585f717
Implement static_cast from lvalue to rvalue reference.
...
llvm-svn: 67487
2009-03-22 22:30:06 +00:00
Eli Friedman
3164fb15e2
Check that the return/argument types of calls are complete.
...
llvm-svn: 67485
2009-03-22 22:00:50 +00:00
Chris Lattner
e64911a4ae
switch getBuiltinLibFunction to use the new GetOrCreateLLVMFunction
...
functionality, fixing a crash on the attached testcase. Eliminate the
BuiltinFunctions cache, as it can contain dangling pointers. This fixes
a bunch of valgrind errors on test/CodeGen/builtins.c
llvm-svn: 67484
2009-03-22 21:56:56 +00:00
Chris Lattner
5404169327
emit aliases as the definitions fly by, don't bother deferring until
...
the end of the module.
llvm-svn: 67482
2009-03-22 21:47:11 +00:00
Chris Lattner
827a3552a4
make alias definition logic more similar to functions/globals.
...
llvm-svn: 67481
2009-03-22 21:39:12 +00:00
Sebastian Redl
b7d6491a7e
Fix build from r67476 and address the easy part of Doug's comments on rvalue refs.
...
llvm-svn: 67480
2009-03-22 21:28:55 +00:00
Chris Lattner
a5ae54acc4
fix PR3200 by making alias emission use the new infrastructure. Fold
...
some tests into the alias.c file.
llvm-svn: 67479
2009-03-22 21:21:57 +00:00
Chris Lattner
d480892445
pull "runtime globals" into the same framework as other functions/global variables.
...
No intended functionality change.
llvm-svn: 67478
2009-03-22 21:03:39 +00:00
Eli Friedman
d6a7b72944
Remove dead code.
...
llvm-svn: 67477
2009-03-22 20:54:47 +00:00
Anders Carlsson
576cc6f725
Disallow abstract types where appropriate.
...
llvm-svn: 67476
2009-03-22 20:18:17 +00:00
Chris Lattner
75acb0c356
fix a fixme: non-proto struct returning function definitions should be compiled
...
to something like:
define void @bar(%struct.foo* noalias sret %agg.result) nounwind {
instead of:
define void @bar(%struct.foo* noalias sret %agg.result, ...) nounwind {
llvm-svn: 67475
2009-03-22 19:35:37 +00:00
Nuno Lopes
34cef4c1c8
fix PR3859: crash with 'cc -V'
...
llvm-svn: 67472
2009-03-22 17:47:44 +00:00
Ted Kremenek
dc637a0be9
PTHManager::Create():
...
- Make the Diagnostic::Level for PTH errors to be specified by the caller
clang (driver):
- Set the PTHManager diagnostic level to "Diagnostic::Error" for -include-pth
(a hard error) and Diagnostic::Warning for -token-cache (we can still
proceed).
llvm-svn: 67462
2009-03-22 06:42:39 +00:00
Anders Carlsson
7cbd8fb6b0
Keep track of whether a class is abstract or not. This is currently only used for the __is_abstract type trait.
...
llvm-svn: 67461
2009-03-22 01:52:17 +00:00
Chris Lattner
e09ad90882
don't set the name of a call instruction to "call" in release-asserts
...
build. This shaves another 3% off.
llvm-svn: 67460
2009-03-22 00:32:22 +00:00
Chris Lattner
47640221da
fix CreateTempAlloca to not set a name on the alloca for temporaries
...
in release-assert builds. For automatic variables, explicitly set
a name with setName that does not make a temporary std::string.
This speeds up -emit-llvm-only -disable-free on PR3810 by 4.6%
llvm-svn: 67459
2009-03-22 00:24:14 +00:00
Chris Lattner
4ff71de880
set function/global names with setName instead of passing the name into the
...
ctor function. This avoids creating a temporary std::string for the name,
speeding up the testcase in PR3810 by 3.8%
llvm-svn: 67457
2009-03-22 00:12:30 +00:00
Chris Lattner
17556b2d95
fix some warnings in release-assert mode.
...
llvm-svn: 67456
2009-03-22 00:10:22 +00:00
Mike Stump
efd7caa825
Fixup codegen for nested block literals so that we generate
...
copy_helpers and dispose_helpers as necessary for them.
llvm-svn: 67453
2009-03-21 21:00:35 +00:00
Douglas Gregor
221c9a5578
Fix a thinko in the pre-allocation strategy for structured initializer
...
lists. The code wasn't accounting for the distinction between the
top-level call to getStructuredSubobjectInit and later calls that
occur deeper in the hierarchy. This problem manifested itself as
over-allocation in cases where we have large arrays of small
structures (<rdar://problem/6707362>).
llvm-svn: 67452
2009-03-21 18:13:52 +00:00
Fariborz Jahanian
629aed9327
Issue error if variables are defined inside an objc class,
...
category or protocol.
llvm-svn: 67450
2009-03-21 18:06:45 +00:00
Chris Lattner
45470943a9
now that all the decl reference and creation stuff is going through two
...
very simple places, reimplement the deferred decl emission logic to not be O(N^2),
fixing PR3810.
llvm-svn: 67447
2009-03-21 09:44:56 +00:00
Chris Lattner
a85d68e5d8
fix a crash that could occur when a variable declaration became a
...
function definition.
llvm-svn: 67446
2009-03-21 09:25:43 +00:00
Chris Lattner
149927c9f8
simplify and cleanup global variable creation stuff to all go through one
...
code path.
llvm-svn: 67445
2009-03-21 09:16:30 +00:00
Chris Lattner
832323ea41
simplify management of llvm::Function creation to all go through
...
GetAddrOfFunction. This is simpler and more efficient.
llvm-svn: 67444
2009-03-21 08:53:37 +00:00
Chris Lattner
5eaee5692c
code cleanups, rename EmitForwardFunctionDefinition ->
...
CreateFunctionPrototypeIR, though my next patch will eliminate
it entirely.
llvm-svn: 67443
2009-03-21 08:38:50 +00:00
Chris Lattner
6574906818
fix several problems with asm renaming, by pulling it into the mangling code:
...
1. it wasn't applying to definitions, only declarations, e.g. int x __asm("foo")
2. multiple definitions were conflicting, they weren't getting merged.
3. the code was duplicated in several places.
llvm-svn: 67442
2009-03-21 08:24:40 +00:00
Chris Lattner
64c55933ed
add some fixmes
...
llvm-svn: 67441
2009-03-21 08:13:05 +00:00
Chris Lattner
a9cb6261bf
reduce redundant calls of getMangledName.
...
llvm-svn: 67440
2009-03-21 08:06:59 +00:00
Chris Lattner
3bfce1887f
simplify some more code.
...
llvm-svn: 67439
2009-03-21 08:03:33 +00:00
Chris Lattner
0c5e3132aa
simplify and comment some code better. Make BindRuntimeGlobals
...
more optimistic that it will work (optimizing for the common case).
llvm-svn: 67438
2009-03-21 07:48:31 +00:00
Chris Lattner
3637652ab3
random code cleanups.
...
llvm-svn: 67437
2009-03-21 07:12:05 +00:00
Chris Lattner
6098e62d56
remove obviously dead code: you can't bitcast a pointer to "Ty" (a function type).
...
llvm-svn: 67436
2009-03-21 06:58:21 +00:00
Chris Lattner
9e8120e067
avoid making constant folding logic eliminate obviously dead bitcasts, speeding up PR3810
...
by ~2%.
llvm-svn: 67434
2009-03-21 06:53:34 +00:00
Chris Lattner
7d5608dd72
add an assertion for unreachable code.
...
llvm-svn: 67432
2009-03-21 06:40:50 +00:00
Chris Lattner
725a26b818
Add a fast path to CodeGenModule::getMangledName for almost all C functions,
...
speeding up the testcase in PR3810 by 60%.
llvm-svn: 67431
2009-03-21 06:31:09 +00:00
Chris Lattner
c2d987425d
partially inline getAttrs() to speed up PR3810 (and lots of
...
other code presumably) by 4.3%
llvm-svn: 67430
2009-03-21 06:27:31 +00:00
Chris Lattner
cfbe9e746f
simplify CXXNameMangler::mangle, making it exit earlier for C functions.
...
This speeds up a testcase in 3810 by ~16%.
llvm-svn: 67429
2009-03-21 06:19:20 +00:00
Daniel Dunbar
1acb0eb24f
Driver: Give Compilation::Execute total control over the Driver result
...
code; and don't return an error code when -### is present, even if
errors occur.
llvm-svn: 67425
2009-03-21 00:40:53 +00:00
Ted Kremenek
f97c47ca15
Add back warning about a PTH file not containing any identifiers, but don't make
...
it a hard error.
llvm-svn: 67424
2009-03-21 00:25:09 +00:00
Ted Kremenek
b12f24116d
Allow PTH files with no identifiers.
...
llvm-svn: 67423
2009-03-21 00:15:11 +00:00
Douglas Gregor
6d00c993f5
When building the structured initializer list, pre-allocate storage in
...
its vectors based on the subobject type we're initializing and the
(unstructured) initializer list. This eliminates some malloc thrashing
when parsing initializers (from 117 vector reallocations down to 0
when parsing Cocoa.h). We can't always pre-allocate the right amount
of storage, since designated initializers can cause us to initialize
in non-predictable patterns.
llvm-svn: 67421
2009-03-20 23:58:33 +00:00
Daniel Dunbar
ea9f032613
ccc/Driver: .s defaults to 'assembler-with-cpp' on Darwin.
...
- <rdar://problem/6669441> ccc doesn't handle assembler-with-cpp
semantics correctly (but clang supports it)
- This is sad, because it requires a fairly useless target
hook. C'est la vie.
llvm-svn: 67418
2009-03-20 23:39:23 +00:00
Douglas Gregor
52a47e9c7b
Destroy expressions properly when resizing an initializer list
...
llvm-svn: 67417
2009-03-20 23:38:03 +00:00
Douglas Gregor
85992cf607
InitListDesignations hasn't been used (ever). Eliminate it, and
...
simplify the parsing and action interface for designated
initializers.
llvm-svn: 67415
2009-03-20 23:11:49 +00:00
Douglas Gregor
da17bd34e7
Eliminate post-diagnostic hooks. Instead, implement a Sema-specific
...
variant of DiagnosticBuilder that emits the template instantiation
backtrace when needed.
llvm-svn: 67413
2009-03-20 22:48:49 +00:00
Mike Stump
692c6e3729
Fix codegen for support for super inside block literal expressions.
...
llvm-svn: 67406
2009-03-20 21:53:12 +00:00
Ted Kremenek
dfd72c2b44
Fix <rdar://problem/6704086> by allowing the format string checking in Sema to
...
allow non-literal format strings that are variables that (a) permanently bind to
a string constant and (b) whose string constants are resolvable within the same
translation unit.
llvm-svn: 67404
2009-03-20 21:35:28 +00:00
Fariborz Jahanian
07038f9785
Fix a crash during meta-data generation of objc2's nonfragile abi.
...
llvm-svn: 67402
2009-03-20 20:48:19 +00:00
Douglas Gregor
63b4ff6aad
Some minor tweaks and additional tests for rvalue references
...
llvm-svn: 67397
2009-03-20 20:21:37 +00:00
Chris Lattner
1d1d80e5f9
rename the <predefines> buffer to <built-in> to solve PR3849.
...
Add a #include directive around the command line buffer so that
diagnostics generated from -include directives get diagnostics
like:
In file included from <built-in>:98:
In file included from <command line>:3:
./t.h:2:1: warning: type specifier missing, defaults to 'int'
b;
^
llvm-svn: 67396
2009-03-20 20:16:10 +00:00
Ted Kremenek
6b31533ad1
GRExprEngine:
...
- Conjure symbols at '--' and '++' unary operations
- Add utility method SVal::GetConjuredSymbolVal() and constify some arguments
along the way.
llvm-svn: 67395
2009-03-20 20:10:45 +00:00
Ted Kremenek
de9e968c5a
Remove unneeded radar reference.
...
llvm-svn: 67394
2009-03-20 19:57:37 +00:00
Daniel Dunbar
60196720eb
Driver: Switch to using -include-pth.
...
llvm-svn: 67393
2009-03-20 19:38:56 +00:00
Fariborz Jahanian
391d4fc7f7
More super dot-syntax property implementation
...
when there is actually a property declaration
used in the dot-syntax.
llvm-svn: 67391
2009-03-20 19:18:21 +00:00
Ted Kremenek
9ffbe41a6c
Fix <rdar://problem/6703892> by not warning about self-comparisons of enum
...
constants.
llvm-svn: 67390
2009-03-20 18:35:45 +00:00
Devang Patel
9f804934df
Fix ivar's size encoding.
...
llvm-svn: 67389
2009-03-20 18:24:39 +00:00
Daniel Dunbar
7f2600244c
Driver: Parse Darwin version out of target triple.
...
llvm-svn: 67388
2009-03-20 18:21:51 +00:00
Ted Kremenek
80e239abc0
PTHManager::Create() now creates a PTHManager even if the PTH file contains no
...
cached tokens. This is for use with -include-pth.
llvm-svn: 67385
2009-03-20 17:54:25 +00:00
Ted Kremenek
8c3f0047b4
retain/release checker: Tracking autorelease counts for objects. We're still not
...
completely there with accurately modeling autorelease pools.
llvm-svn: 67384
2009-03-20 17:34:15 +00:00
Fariborz Jahanian
150abf2a00
Implement ir gen. for setter/getter applied to 'super'
...
in a property dot-syntax notation.
llvm-svn: 67382
2009-03-20 17:22:23 +00:00
Daniel Dunbar
be2208472c
Driver: Add and use darwin::Assemble tool.
...
- Based on patch from Pieter de Bie; thanks!
llvm-svn: 67379
2009-03-20 16:06:39 +00:00
Chris Lattner
1e1c0b9fd3
refactor some code, fixing a problem discovered by the dragonfly bsd people, where
...
clang was defining "i386" even when in non-gnu mode.
llvm-svn: 67378
2009-03-20 16:06:38 +00:00
Daniel Dunbar
e81cc832f6
Driver: Add two option overload for AddAllArgValues.
...
llvm-svn: 67377
2009-03-20 15:59:01 +00:00
Chris Lattner
a1321f1632
pass langoptions around.
...
llvm-svn: 67376
2009-03-20 15:55:34 +00:00
Chris Lattner
4ba73aa0c2
pass LangOptions into TargetInfo::getTargetDefines, so that targets
...
can have language-specific defines.
llvm-svn: 67375
2009-03-20 15:52:06 +00:00
Daniel Dunbar
0e75994e8b
Driver: Add Arg::getAsString and use when dumping arguments to
...
diagnostics.
- This ensures that the whole argument and values are printed,
instead of just the option name.
llvm-svn: 67366
2009-03-20 06:14:23 +00:00
Chris Lattner
03b886e301
strictly evaluate SVN_REVISION so that svnversion is run once instead of 4 times.
...
llvm-svn: 67365
2009-03-20 05:23:53 +00:00
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