Eli Friedman
e83d2b7649
Attempt to fix uninitialized value warning reported on cfe-commits.
...
llvm-svn: 110418
2010-08-06 01:17:25 +00:00
John McCall
dc9796e23a
Properly pop out of Objective-C method declarations when they are (ill-formedly)
...
found within contexts other than the translation unit.
llvm-svn: 110417
2010-08-06 00:46:05 +00:00
Sebastian Redl
e98428d7bd
Add an environment variable that makes libclang use chaining for PCH.
...
llvm-svn: 110414
2010-08-06 00:35:11 +00:00
Zhongxing Xu
cf61a0639d
Don't assert on a file stream if its state is not tracked. Fix pr7831.
...
llvm-svn: 110392
2010-08-05 23:24:13 +00:00
Jordy Rose
afdb053618
When checking if a buffer access is valid, first make sure the buffer has a valid Loc. Fixes PR7830.
...
llvm-svn: 110390
2010-08-05 23:11:30 +00:00
Bruno Cardoso Lopes
3d19889ca8
Fix AVX 256-bit intrinsics headers by using the right cast type while dealing with logical ops
...
llvm-svn: 110389
2010-08-05 23:04:58 +00:00
John McCall
491462425a
Don't crash when mangling empty anonymous unions. We never actually *need*
...
these, but it's convenient to mangle them when deferring them (in the 99.99%
case where it's not an anonymous union, of course).
llvm-svn: 110381
2010-08-05 22:02:13 +00:00
Sebastian Redl
f03cdc5d27
Collect namespaces that need updating in a PCH chain. WIP
...
llvm-svn: 110378
2010-08-05 21:22:19 +00:00
Fariborz Jahanian
903aba39ee
Add support for block imported struct variable layout info.
...
(objc gc and blocks in NeXt runtime).
llvm-svn: 110377
2010-08-05 21:00:25 +00:00
John McCall
5513fce96b
It turns out that linkers (at least, the Darwin linker) don't necessarily
...
do the right thing with mixed-visibility symbols, so disable the visibility
optimization where that's possible, i.e. with template classes (since it's
possible that an arbitrary template might be subject to an explicit
instantiation elsewhere). 447.dealII actually does this.
I've put the code under an option that's currently not hooked up to anything.
llvm-svn: 110374
2010-08-05 20:39:18 +00:00
Chris Lattner
dc7ee3cd6b
fix the va_list definition for vc++64, patch by Cameron Esfahani!
...
llvm-svn: 110370
2010-08-05 20:04:20 +00:00
Sebastian Redl
08aca90253
Write various C++-specific records to chained PCHs. Tests will come later.
...
llvm-svn: 110357
2010-08-05 18:21:25 +00:00
John McCall
95bde46bbb
Argument evaluation order is not guaranteed. Split these out to force an order.
...
llvm-svn: 110354
2010-08-05 18:11:10 +00:00
Tom Care
16ba7c652e
Fixed logic error in UnreachableCodeChecker's marking algorithm that would sometimes allow for multiple sequential statements to be flagged.
...
llvm-svn: 110353
2010-08-05 17:53:44 +00:00
John McCall
a9731a4179
Fix a major bug with -ftrapv and ++/--. Patch by David Keaton!
...
llvm-svn: 110347
2010-08-05 17:39:44 +00:00
John McCall
0f8ccc4938
Allow multiple __declspec attributes after a class-key.
...
Patch by Francois Pichet!
llvm-svn: 110344
2010-08-05 17:13:11 +00:00
Fariborz Jahanian
d652ac82b0
For now skip over aggregate non-byref block variables.
...
(objc gc specific).
llvm-svn: 110340
2010-08-05 16:13:18 +00:00
Fariborz Jahanian
89f3721dee
Trying to unbreak buildbot.
...
llvm-svn: 110339
2010-08-05 15:52:12 +00:00
Ted Kremenek
9c22219d9c
Revert r110317, and add a comment why the assertion is not an invariant.
...
llvm-svn: 110330
2010-08-05 15:03:30 +00:00
Eli Friedman
06dcfd94c8
Flip the switch to use OffsetOfExpr unconditionally; feel free to revert if
...
this breaks something.
I'll wait a few days before cleaning out UnaryOperator::OffsetOf.
llvm-svn: 110328
2010-08-05 10:15:45 +00:00
Eli Friedman
74ef7cf144
PR7769: Fix references to anonymous structs/unions in base classes in
...
offsetof expressions.
llvm-svn: 110327
2010-08-05 10:11:36 +00:00
Eli Friedman
d7c7232a1d
Add IRGen support for non-constant OffsetOfExpr.
...
llvm-svn: 110326
2010-08-05 09:58:49 +00:00
Argyrios Kyrtzidis
7f76d11dcc
Store the pending implicit instantiations in the PCH and perform them at the end of the translation unit that
...
included the PCH, as God intended.
llvm-svn: 110324
2010-08-05 09:48:16 +00:00
Argyrios Kyrtzidis
ee1afa3082
Support #pragma weak for PCH.
...
llvm-svn: 110323
2010-08-05 09:48:08 +00:00
Argyrios Kyrtzidis
4ba81b2ee4
Make sure C++ variable definitions are actually passed to the consumer when loaded from PCH.
...
llvm-svn: 110322
2010-08-05 09:47:59 +00:00
Eli Friedman
0cdda02f44
Make checker recognize OffsetOfExpr as a form of __builtin_offsetof.
...
llvm-svn: 110320
2010-08-05 09:43:11 +00:00
Douglas Gregor
b68bc59a2d
Give clang_codeCompleteAt() an "options" parameter, and add a new
...
flags enumeration + default-generating function that allows
code-completion to be customized via the libclang API.
Plus, turn on spell-checking when performing code completion.
llvm-svn: 110319
2010-08-05 09:09:23 +00:00
John McCall
42d7d19710
TDK_InconsistentQuals is really totally different from TDK_Inconsistent.
...
Rename it to TDK_Underqualified to avoid this sort of confusion and give it
its own diagnostic.
llvm-svn: 110318
2010-08-05 09:05:08 +00:00
Zhongxing Xu
478fdb16db
Turn the predicate into an assertion. When could the unequal case happen?
...
llvm-svn: 110317
2010-08-05 07:38:23 +00:00
Eli Friedman
570024a8d9
Implement #pragma GCC visibility.
...
llvm-svn: 110315
2010-08-05 06:57:20 +00:00
Nick Lewycky
ef7c0ffe40
Remove the warning for variables declared in the if-expression being used in
...
the else clause. The problem is that it's overly zealous and will respond to
uses in assignments, or after assignments. We should bring this back once we
can do it right. Fixes PR7100.
llvm-svn: 110314
2010-08-05 06:27:49 +00:00
John McCall
da518417fa
Permit template argument deduction to add qualifiers within ObjC object
...
pointers like it can with normal and member pointers.
llvm-svn: 110313
2010-08-05 05:30:45 +00:00
John McCall
3b3a5ed72d
operator<< on a DiagnosticBuilder should *always* output exactly one thing.
...
Null template arguments are bad, but they're better than crashing with an
argument mismatch.
llvm-svn: 110312
2010-08-05 04:58:04 +00:00
Jordy Rose
28041c29af
Tweak GRState::unbindLoc to use makeWithStore, and make sure it's only called for non-region locations.
...
llvm-svn: 110310
2010-08-05 03:33:56 +00:00
Jordy Rose
c88c74cb2f
Remove InvalidateRegion from stores, since it's no longer called from outside.
...
llvm-svn: 110309
2010-08-05 03:28:45 +00:00
Eli Friedman
d8725a9602
Preserve calling convention etc. across template instantiations.
...
llvm-svn: 110304
2010-08-05 02:54:05 +00:00
Eli Friedman
a170cd6257
Get rid of isObjectType; when C++ says "object type", it generally
...
just means "not a function type", not "not a function type or void". This
changes behavior slightly, but generally in a way which accepts more code.
llvm-svn: 110303
2010-08-05 02:49:48 +00:00
Sebastian Redl
29ce472c17
Drop an unjustified limitation from Type::isObjectType(). Fixes PR7801 and doesn't seem to break anything.
...
llvm-svn: 110295
2010-08-05 01:21:19 +00:00
Sebastian Redl
e0351b970d
Remove a redundant and broken check. Fixes PR7810.
...
llvm-svn: 110294
2010-08-05 00:45:34 +00:00
Fariborz Jahanian
1f78a9ad56
Clean up of my last patch.
...
llvm-svn: 110290
2010-08-05 00:19:48 +00:00
Ted Kremenek
1d08fd9b79
Correctly handle 'Class<...>' when examining Cocoa conventions in the static analyzer. Fixes a crash reported in <rdar://problem/8272168>. Patch by Henry Mason!
...
llvm-svn: 110289
2010-08-05 00:19:24 +00:00
Ted Kremenek
8a297e9f27
Remove bonehead redeclaration.
...
llvm-svn: 110288
2010-08-05 00:03:46 +00:00
Fariborz Jahanian
9659f6b540
Block variable layout bitmap API generation.
...
llvm-svn: 110287
2010-08-04 23:55:24 +00:00
Ted Kremenek
60fa657aa2
Fix CFGBuilder to not blow out the stack when processing deeply nested CaseStmts. Fixes <rdar://problem/8268753>.
...
llvm-svn: 110286
2010-08-04 23:54:30 +00:00
John McCall
c8bd9c277b
Extend the visibility-hidden optimization to linkonce_odr thunks for
...
functions with in-line definitions, since such thunks will be emitted at any
use of the function.
Completes the feature work for rdar://problem/7523229.
llvm-svn: 110285
2010-08-04 23:46:35 +00:00
Bruno Cardoso Lopes
fc2320fd73
Logical AVX instrinsics can be matched directly, no need to use builtins here.
...
llvm-svn: 110271
2010-08-04 22:56:42 +00:00
Bruno Cardoso Lopes
d81ef1c85c
Add -mavx and -mno-avx command line support
...
llvm-svn: 110265
2010-08-04 22:29:13 +00:00
Sebastian Redl
51c79d8740
Activate selectors in chained PCH. Chained PCH now works for Objective-C.
...
llvm-svn: 110262
2010-08-04 22:21:29 +00:00
Bruno Cardoso Lopes
7c4b513a3f
Add AVX intrinsics header
...
llvm-svn: 110253
2010-08-04 22:03:36 +00:00
Sebastian Redl
6e1a2a0693
Bring stats for the method pool back.
...
llvm-svn: 110247
2010-08-04 21:22:45 +00:00
Sebastian Redl
ada023c5d6
Implement per-file reading of the selector table. This disables statistics about method pool hits for the moment.
...
llvm-svn: 110245
2010-08-04 20:40:17 +00:00
Ted Kremenek
b786156b01
Teach SemaChecking::CheckReturnStackAddr about ImplicitCastExprs that convert values to an lvalue. This allows us to warn (again) about returning references to stack variables. (fixes PR 7812).
...
llvm-svn: 110242
2010-08-04 20:01:07 +00:00
Fariborz Jahanian
afa3c0a875
More objc block variable layout info. work.
...
llvm-svn: 110239
2010-08-04 18:44:59 +00:00
Ted Kremenek
0950212b50
Add CFGStmtMap, which defines a mapping from Stmt* to CFGBlock*. The immediate intended use is in the unreachable code analysis.
...
llvm-svn: 110230
2010-08-04 18:23:15 +00:00
Sebastian Redl
d95a56e50d
When chaining, only write interesting selectors to the PCH.
...
llvm-svn: 110229
2010-08-04 18:21:41 +00:00
Sebastian Redl
834bb971f6
Store the IDs of selectors in the PCH file explicitly.
...
llvm-svn: 110219
2010-08-04 17:20:04 +00:00
Douglas Gregor
d8a5dba9c2
When performing in-process code completion, don't free the remapped
...
file buffers until the code completion results are destroyed;
diagnostics may end up referring into the source.
llvm-svn: 110216
2010-08-04 17:07:00 +00:00
Fariborz Jahanian
c05349e53a
Some early work for providing block layout info.
...
for objective-c/c++ blocks (NeXt runtime).
llvm-svn: 110213
2010-08-04 16:57:49 +00:00
Douglas Gregor
8e984da800
Add code-completion support directly to ASTUnit, which performs code
...
completion within the translation unit using the same command-line
arguments for parsing the translation unit. Eventually, we'll reuse
the precompiled preamble to improve code-completion performance, and
this also gives us a place to cache results.
Expose this function via the new libclang function
clang_codeCompleteAt(), which performs the code completion within a
CXTranslationUnit. The completion occurs in-process
(clang_codeCompletion() runs code completion out-of-process).
llvm-svn: 110210
2010-08-04 16:47:14 +00:00
John McCall
e16adc2b1e
Emit standard-library RTTI with external linkage, not weak_odr.
...
Apply hidden visibility to most RTTI; libstdc++ does not rely on exact
pointer equality for the type info (just the type info names). Apply
the same optimization to RTTI that we do to vtables.
Fixes PR5962.
llvm-svn: 110192
2010-08-04 08:34:44 +00:00
Jordy Rose
c36df4d0b7
Change the checker callback cache in GRExprEngine to be more compact (and IMHO a little easier to understand), and add the same sort of caching for EvalAssume (tied for least-used callback), mostly as proof-of-concept.
...
Before we go further with these, we should figure out a way to reuse the visit-and-cache code in CheckerVisit.
llvm-svn: 110191
2010-08-04 07:10:57 +00:00
John McCall
8a705c15d9
Extend the hidden-visibility vtables optimization to template classes that
...
haven't been explicitly instantiated.
llvm-svn: 110189
2010-08-04 06:38:15 +00:00
John McCall
2dd7d44135
Some more correctness fixes and code-size optimizations for fragile-ABI
...
ObjC exceptions:
- don't enter a try for the catch blocks unless there's a finally
- put the setjmp buffer in the locals set for liveness reasons
- dump the sync object into an alloca in the locals set for liveness reasons
Some of this can go away if the backend starts to properly calculate liveness
in the presence of setjmp (which would also be a *much* stabler solution).
llvm-svn: 110188
2010-08-04 05:59:32 +00:00
Douglas Gregor
bb420abd0b
When we try (but fail) to build a precompiled preamble, wait for a
...
short "cooling off" period (defaulting to 5 reparses) before trying to
build a precompiled preamble again. Previously, if we failed to build
the precompiled preamble at any time, we just gave up the whole
charade any never tried again.
llvm-svn: 110187
2010-08-04 05:53:38 +00:00
John McCall
deb646ebb5
Only look up an 'operator delete' on the definition of a destructor, not on
...
a declaration.
llvm-svn: 110175
2010-08-04 01:04:25 +00:00
John McCall
66a8759400
Look through using declarations when deciding whether to use an operator
...
delete for a virtual destructor. Diagnose ambiguities.
Fixes PR7803.
llvm-svn: 110173
2010-08-04 00:31:26 +00:00
John McCall
8601a75118
Do a very simple pass over every function we emit to infer whether we can
...
mark it nounwind based on whether it contains any non-nounwind calls.
<rdar://problem/8087431>
llvm-svn: 110163
2010-08-03 22:46:07 +00:00
Chris Lattner
38321174e0
add a hack for visual studio, fixing PR7796
...
llvm-svn: 110161
2010-08-03 22:13:56 +00:00
Sebastian Redl
a19a67f899
Incomplete promotion of selector info to per-file data.
...
Store all selectors in the selector hash table instead of only those from the method pool.
llvm-svn: 110158
2010-08-03 21:58:15 +00:00
Nate Begeman
f568b074db
Add support for VFP status & control operations for ARM.
...
llvm-svn: 110153
2010-08-03 21:32:34 +00:00
Tom Care
be633d91d0
Improved false positive detection and numerous small issues in UnreachableCodeChecker
...
- Reporting now uses getUnreachableStmt which returns the Stmt* we should report
- Indexing of reachable and visited blocks now use CFGBlock ID's instead of pointers
- The CFG used in the unreachable search is now the unoptimized CFG
- Added 'Dead code' category to warnings
- Removed obsolete function getCondition
- Simplified false positive detection based on properties of FindUnreachableEntryPoints
llvm-svn: 110148
2010-08-03 21:24:13 +00:00
Jordy Rose
ddec092641
Makes GRState::makeWithStore private, to encourage clients to make store changes through GRState instead of directly accessing the StoreManager. Also adds cover methods for InvalidateRegion(s) and EnterStackFrame to GRState.
...
This is in preparation for proposed region change notifications. No functionality change.
llvm-svn: 110137
2010-08-03 20:44:35 +00:00
Douglas Gregor
e9db88f991
When using a precompiled preamble, keep track of the top-level
...
declarations that we saw when creating the precompiled preamble, and
provide those declarations in addition to the declarations parsed in
the main source file when traversing top-level declarations. This
makes the use of precompiled preambles a pure optimization, rather
than changing the semantics of the parsed translation unit.
llvm-svn: 110131
2010-08-03 19:06:41 +00:00
Eli Friedman
865afc96f7
PR7795: Fix the definition of __WCHAR_MAX__ with -fshort-wchar.
...
llvm-svn: 110126
2010-08-03 17:34:19 +00:00
Argyrios Kyrtzidis
839bbacfb2
Apart from storing/retrieving the previous redeclaration from PCH, also store/retrieve the most recent
...
redeclaration. That way we are sure that the full redeclarations chain is loaded.
When using chained PCHs, first declarations point to the most recent redeclarations in the same PCH.
To address this use a REDECLS_UPDATE_LATEST record block to keep track of which first declarations need
to point to a most recent redeclaration in another PCH.
llvm-svn: 110125
2010-08-03 17:30:10 +00:00
Argyrios Kyrtzidis
1e1de05f18
Send AST dumping/printing to stdout instead of stderr.
...
llvm-svn: 110123
2010-08-03 17:29:57 +00:00
Argyrios Kyrtzidis
edee67f335
Avoid writing a VTABLE_USES record in PCH if there are no entries.
...
llvm-svn: 110122
2010-08-03 17:29:52 +00:00
Chris Lattner
278008f546
fix some undefined behavior, PR7779.
...
llvm-svn: 110116
2010-08-03 16:48:42 +00:00
Daniel Dunbar
939c1211cc
Driver: Don't forward any -g options to GCC, when using it to drive the
...
assembler.
- Fixes PR6218, hopefully.
llvm-svn: 110111
2010-08-03 16:14:14 +00:00
Douglas Gregor
48c8cd3fd0
Reshuffle the PCH generator action and consumer, so that we can re-use
...
it while generating precompiled preambles. No functionality change.
llvm-svn: 110108
2010-08-03 08:14:03 +00:00
John McCall
5696d6d316
Emit weak vtables of non-template classes with hidden visibility.
...
llvm-svn: 110107
2010-08-03 07:24:12 +00:00
Zhongxing Xu
42b8c30de6
Allow offsets to be negative. Out-of-bound cases are checked elsewhere. We
...
shouldn't put restrictions in store manager.
llvm-svn: 110106
2010-08-03 06:34:25 +00:00
Zhongxing Xu
83734e46ce
Pull the region offset computation logic into a single method.
...
llvm-svn: 110102
2010-08-03 04:52:05 +00:00
Tom Care
44081fbc6c
Changed GRExprEngine to pass down a reference to itself when checkers are doing postanalysis. This allows the checker to gather information about the state of the engine when it has finished.
...
- Exposed the worklist and BlockAborted flag in GRCoreEngine
- Changed postanalysis checkers to use the new infrastructure
llvm-svn: 110095
2010-08-03 01:55:07 +00:00
Ted Kremenek
4a2b237967
Add -cc1 option '-unoptimized-cfg' to toggle using a CFG (for static analysis) that doesn't prune CFG edges.
...
llvm-svn: 110087
2010-08-03 00:09:51 +00:00
Ted Kremenek
dc03bd0894
Add 'AnalysisContext::getUnoptimizedCFG()' to allow clients to get access to the original
...
CFG without any edges pruned out because of trivially solvable conditions (e.g., 'if (0)').
llvm-svn: 110085
2010-08-02 23:46:59 +00:00
John McCall
4a33fa95c0
Labels (and case statement) don't create independent scope parents for the
...
purposes of the jump checker. Also extend Ted's iteration fix to labels.
Fixes PR7789.
llvm-svn: 110082
2010-08-02 23:33:14 +00:00
Sebastian Redl
75d8a32817
Simplify global method pool implementation in Sema. No functionality change.
...
llvm-svn: 110078
2010-08-02 23:18:59 +00:00
Ted Kremenek
04d50f5d13
Fix another case (this time in JumpScopeChecker) where walking deeply nested CaseStmts can blow out the stack. Fixes <rdar://problem/8125165>.
...
llvm-svn: 110071
2010-08-02 22:46:57 +00:00
Ted Kremenek
297e2e5bf6
Fix idempotent operations false positive caused by ivars not being invalidated in function
...
calls when the enclosing object had retain/release state. Fixes <rdar://problem/8261992>.
llvm-svn: 110068
2010-08-02 21:59:12 +00:00
John McCall
8b0f4ff317
Further adjustments to -Wglobal-constructors; works for references and direct
...
initializations now.
llvm-svn: 110063
2010-08-02 21:13:48 +00:00
Douglas Gregor
d9a30af25b
When using a precompiled preamble, save the diagnostics produced when
...
creating the preamble and "replay" them when reusing the
preamble. Also, fix a thinko in the copying of the preamble when
building the precompiled preamble.
llvm-svn: 110061
2010-08-02 20:51:39 +00:00
Ted Kremenek
8a4a2b14e8
'Assumption &A' gets default initialized to 'Possible' if it doesn't exist; no need to two
...
lookups in the hashtable.
llvm-svn: 110059
2010-08-02 20:33:02 +00:00
Sebastian Redl
78f5177d37
Query only the latest version of an identifier in the PCH chain. Make sure this version holds the entire declaration chain. This is a much saner solution than trying to merge the info from all elements, and makes redeclarations work properly. Expand the declarations test case to cover more compliated cases.
...
llvm-svn: 110052
2010-08-02 18:30:12 +00:00
Sebastian Redl
9d8854ec60
Remove mutable data on TagType and InjectedClassNameType, by instead walking the declaration chain in search of a definition. This is necessary for a sane chained PCH implementation. No observable performance change on Carbon.h syntax-only, and bootstraps cleanly.
...
llvm-svn: 110051
2010-08-02 18:27:05 +00:00
Fariborz Jahanian
9c6a39e862
Compute width/align of objc builtin types (id, etc)
...
for radar 8258797.
llvm-svn: 110047
2010-08-02 18:03:20 +00:00
Argyrios Kyrtzidis
2d68810caf
Read/write in PCH Sema's StdNamespace and StdBadAlloc and use a LazyDeclPtr for them that will deserialize them when needed.
...
llvm-svn: 110031
2010-08-02 07:14:54 +00:00
Argyrios Kyrtzidis
4f8e17379d
Rename getStdNamespace -> getOrCreateStdNamespace, to better reflect its functionality.
...
No functionality change.
llvm-svn: 110030
2010-08-02 07:14:39 +00:00
Daniel Dunbar
71c723da29
Driver/Darwin: Change where Darwin computes the host version, to normalize tool
...
chain construction.
llvm-svn: 110028
2010-08-02 05:44:07 +00:00
Daniel Dunbar
a73a9845e2
Driver: Have -ccc-host-triple simply override the default in the driver, for
...
now.
llvm-svn: 110027
2010-08-02 05:44:04 +00:00
Daniel Dunbar
3ae26dfc91
Driver/Darwin: Inline some constants.
...
llvm-svn: 110026
2010-08-02 05:44:01 +00:00
Daniel Dunbar
a18a487633
Driver/FreeBSD: Change how FreeBSD derives the Lib32 variable, to normalize tool
...
chain construction.
llvm-svn: 110025
2010-08-02 05:43:59 +00:00
Daniel Dunbar
cc7df6cc7b
Driver: Move HostInfo::lookupTypeForExtension to ToolChain::LookupTypeForExtension.
...
llvm-svn: 110024
2010-08-02 05:43:56 +00:00
Daniel Dunbar
a36c2b3a62
Driver: Give Build{Universal,}Actions access to the default host tool chain. I
...
avoided this originally to enforce that the driver actions aren't toolchain
dependent, but it isn't worth the cumbersone additional hostinfo split.
llvm-svn: 110023
2010-08-02 05:43:51 +00:00
Zhongxing Xu
fd91d27630
Improve flat store: MemRegion::getAsOffset() computes a region's offset within
...
the top-level object. FlatStore now can bind and retrieve element and field
regions.
PR7297 is fixed by flat store.
llvm-svn: 110020
2010-08-02 04:56:14 +00:00
Daniel Dunbar
7fbaf53470
Driver: Add Compilation::addCommand and switch tools to using it, now that we
...
don't have to deal with nested jobs.
llvm-svn: 110015
2010-08-02 02:38:28 +00:00
Daniel Dunbar
b785d74080
Driver: Eliminate PipedJob, which is now unused.
...
llvm-svn: 110014
2010-08-02 02:38:25 +00:00
Daniel Dunbar
b440f56e53
Driver: Eliminate special InputInfo kind for pipes, it is now unused.
...
llvm-svn: 110013
2010-08-02 02:38:21 +00:00
Daniel Dunbar
bffefc015e
Driver: Eliminate now unnecessary tool hooks for whether they accept piped input/output.
...
llvm-svn: 110012
2010-08-02 02:38:18 +00:00
Daniel Dunbar
d00272f6d6
Driver: Simplify.
...
llvm-svn: 110011
2010-08-02 02:38:15 +00:00
Daniel Dunbar
c12a412cb6
Driver: Eliminate now unused argument.
...
llvm-svn: 110010
2010-08-02 02:38:12 +00:00
Daniel Dunbar
89f791e2c2
Driver: Simplify logic for sending 'clang -E t.c' output to stdout.
...
llvm-svn: 110009
2010-08-02 02:38:08 +00:00
Daniel Dunbar
a7dd15888b
Driver: Never try to use piped inputs.
...
llvm-svn: 110008
2010-08-02 02:38:06 +00:00
Daniel Dunbar
926f81fce5
Driver: Start ripping out support for -pipe, which is worthless and complicates
...
too many other things.
llvm-svn: 110007
2010-08-02 02:38:03 +00:00
Daniel Dunbar
ea3813fbc9
Driver/OpenBSD: Update toolchain for compiler changes / C++; patch by Jonathan
...
Gray.
llvm-svn: 109994
2010-08-01 23:13:54 +00:00
Daniel Dunbar
88979914d7
Driver: Keep track of a separate "install dir", which is the path where clang
...
was invoked from (which may not be where the executable itself is).
- This allows having e.g., /Developer/usr/bin/clang be a symlink to some other
location, while still making sure the Driver finds 'as', 'ld', etc. relative
to itself.
llvm-svn: 109989
2010-08-01 22:29:51 +00:00
Eli Friedman
60307d2072
PR7777: Set EnabledByDefault to something useful, instead of setting it
...
randomly. This makes us consistently show "-pedantic" as the warning option
for a warning where appropriate.
llvm-svn: 109987
2010-08-01 22:13:15 +00:00
John McCall
81c9cea24b
Kill off RequiresGlobalConstructor in favor of isConstantInitializer.
...
Note some obvious false positives in the test case.
llvm-svn: 109986
2010-08-01 21:51:45 +00:00
John McCall
47e40931c9
Make a first pass at implementing -Wglobal-constructors. I'm worried that this
...
will end up bizarrely mirroring CGExprConstant, but that might be the hazard of
this feature.
llvm-svn: 109984
2010-08-01 20:20:59 +00:00
John McCall
6602bb1115
Instantiate attributes from the pattern record when instantiating
...
a class template. Fixes rdar://problem/8243419.
llvm-svn: 109967
2010-08-01 02:01:53 +00:00
John McCall
a755f0f74a
Fix indentation.
...
llvm-svn: 109965
2010-08-01 01:25:24 +00:00
John McCall
d4e1b767f3
Don't consider all local variables in C++ to mandate scope-checking, just
...
those with initializers.
llvm-svn: 109964
2010-08-01 01:24:59 +00:00
John McCall
a95172baa0
Only run the jump-checker if there's a branch-protected scope *and* there's
...
a switch or goto somewhere in the function. Indirect gotos trigger the
jump-checker regardless, because the conditions there are slightly more
elaborate and it's too marginal a case to be worth optimizing.
Turns off the jump-checker in a lot of cases in C++. rdar://problem/7702918
llvm-svn: 109962
2010-08-01 00:26:45 +00:00
John McCall
42227edc79
Fix fragile-ABI ObjC exceptions in the presence of optimization with
...
the magic of inline assembly. Essentially we use read and write hazards
on the set of local variables to force flushing locals to memory
immediately before any protected calls and to inhibit optimizing locals
across the setjmp->catch edge. Fixes rdar://problem/8160285
llvm-svn: 109960
2010-07-31 23:20:56 +00:00
Daniel Dunbar
cb82acb884
Parser: Add support for #pragma align, which is just another spelling of #pragma
...
options align.
llvm-svn: 109952
2010-07-31 19:17:07 +00:00
Ted Kremenek
d21139a34f
After a lengthy design discussion, add support for "ownership attributes" for malloc/free checking. Patch by Andrew McGregor!
...
llvm-svn: 109939
2010-07-31 01:52:11 +00:00
Douglas Gregor
0e11955c7a
Implement dependency analysis for the precompiled preamble. If any of
...
the files in the precompiled preamble have changed since it was build,
force the preamble to be rebuilt.
llvm-svn: 109937
2010-07-31 00:40:00 +00:00
Tom Care
18f67e669f
Uncomment unfinished work bailout in IdempotentOperationsChecker.
...
llvm-svn: 109893
2010-07-30 21:14:15 +00:00
Douglas Gregor
15ba0b34a9
Add some timers to ASTUnit that are only enabled when the LIBCLANG_TIMING environment variable is set.
...
llvm-svn: 109890
2010-07-30 20:58:08 +00:00
Sebastian Redl
671eee9e68
Correctly deal with using names for both functions and structs in chained PCH.
...
llvm-svn: 109871
2010-07-30 17:25:10 +00:00
Peter Collingbourne
b498ed6e0b
Refactor find*Specialization functions using SpecEntryTraits
...
This patch reimplements the find*Specialization family of member
functions of {Class,Function}TemplateDecl in terms of a common
implementation that uses SpecEntryTraits to obtain the most recent
declaration.
llvm-svn: 109869
2010-07-30 17:09:04 +00:00
Sebastian Redl
3df5a08b99
Safely get a data pointer for vectors that might be empty.
...
llvm-svn: 109867
2010-07-30 17:03:48 +00:00
Fariborz Jahanian
7b70eb4bb1
Tighten the rules when deciding if an ivar must be
...
auto-synthesized (nonfragile-abi2 specific).
Fixes radar 8251648.
llvm-svn: 109866
2010-07-30 16:59:05 +00:00
Abramo Bagnara
ed5b6899ab
Fixed typedef inside extern "C".
...
llvm-svn: 109865
2010-07-30 16:47:02 +00:00
Argyrios Kyrtzidis
98d045eb68
When we are deserializing the lexical decls of a DeclContext from PCH, notify the PCHReader to hold off passing Decls
...
to the consumer until the DeclContext is fully prepared.
Before, due to recursive loading, we could be in a situation where we would try to deserialize the decls of a DeclContext which was already doing that, and bad things would happen. In the specific case I encountered, the lexical decls would
form a cycle and we would enter infinite loop territory.
llvm-svn: 109857
2010-07-30 10:03:23 +00:00
Argyrios Kyrtzidis
b24355af87
Refactor the way PCHReader tracks whether we are in recursive loading.
...
-Replace CurrentlyLoadingTypeOrDecl with a counting scheme (NumCurrentElementsDeserializing)
-Provide outside access to the mechanism by adding methods StartedDeserializing/FinishedDeserializing
to ExternalASTSource.
These are preparation for the next commit.
llvm-svn: 109856
2010-07-30 10:03:16 +00:00
John McCall
413021a8c7
Improve error recovery when presented with an ill-formed template-id
...
(e.g. due to a broken template argument) following template parameters.
Fixes rdar://problem/8254267
llvm-svn: 109853
2010-07-30 06:26:29 +00:00
John McCall
0925714eca
If a TST_typename has a null type, mark the declarator invalid. Prevents
...
some downstream crashes, among them rdar://problem/8229840.
llvm-svn: 109850
2010-07-30 05:17:22 +00:00
John McCall
45d494785d
Emit global destructors even if the destroyed object has no initializers or has
...
an initializer requiring temporary object disposal.
Fixes rdar:://problem/8246444.
llvm-svn: 109849
2010-07-30 04:56:58 +00:00
Chris Lattner
8a2f3c778e
fix PR5179 and correctly fix PR5831 to not miscompile.
...
The X86-64 ABI code didn't handle the case when a struct
would get classified and turn up as "NoClass INTEGER" for
example. This is perfectly possible when the first slot
is all padding (e.g. due to empty base classes). In this
situation, the first 8-byte doesn't take a register at all,
only the second 8-byte does.
This fixes this by enhancing the x86-64 abi stuff to allow
and handle this case, reverts the broken fix for PR5831,
and enhances the target independent stuff to be able to
handle an argument value in registers being accessed at an
offset from the memory value.
This is the last x86-64 calling convention related miscompile
that I'm aware of.
llvm-svn: 109848
2010-07-30 04:02:24 +00:00
Ted Kremenek
28e1c9155e
Don't print out ivars twice in Decl::print(). Fixes <rdar://problem/8253668>.
...
llvm-svn: 109833
2010-07-30 00:47:46 +00:00
Sebastian Redl
07a89a83d4
Make macro weirdness in chained PCH work. This required changing the way PCHReader and PCHWriter are initialized to correctly pick up all initializer. On the upside, this means that there is far less repetition in the dependent PCH now.
...
llvm-svn: 109823
2010-07-30 00:29:29 +00:00
Daniel Dunbar
cda4307308
Revert "Re-apply fixed version of 108749, correctly conditionalizing the new
...
sections on", this change uncovered a possible linker bug which resulted in the
wrong messages getting dispatched. Backing this out while we investigate...
llvm-svn: 109817
2010-07-29 22:57:21 +00:00
Nate Begeman
1194bd2bd8
Wire up sema checking for __builtin_arm_usat and __builtin_arm_ssat immediates.
...
llvm-svn: 109814
2010-07-29 22:48:34 +00:00
Douglas Gregor
b607393ac8
Teach isIncompleteType() to look through sugar when it is dealing with
...
Objective-C object and interface types. This is part of PR7741.
llvm-svn: 109808
2010-07-29 22:17:04 +00:00
Chris Lattner
1f3a063f00
move the last hunk of getCoerceResult into the place
...
that needs it and remove getCoerceResult.
llvm-svn: 109807
2010-07-29 21:42:50 +00:00
Chris Lattner
60fbd7744f
now that direct and coerce are merged, getCoerceResult gets simpler.
...
llvm-svn: 109805
2010-07-29 21:29:53 +00:00
Chris Lattner
09794695ef
now that GetSSETypeAtOffset handles passing SSE class values as
...
float, the special case hack in getCoerceResult can go away.
llvm-svn: 109804
2010-07-29 21:22:50 +00:00
Argyrios Kyrtzidis
c904933aac
Change the name to something less terrible; suggestion by Doug. No functionality change.
...
llvm-svn: 109797
2010-07-29 20:08:05 +00:00
Argyrios Kyrtzidis
6e03a7476f
Weak references and variables that are not definitions are not required for early codegen/deserialization.
...
llvm-svn: 109796
2010-07-29 20:07:52 +00:00
Chris Lattner
e556a71859
Implement the clang-side of detection for when to pass as
...
<2 x float> instead of double. This works but can't be turned
on until I teach codegen to pass <2 x float> as one XMM register
instead of two.
llvm-svn: 109790
2010-07-29 18:39:32 +00:00
Chris Lattner
50a357e962
Look at me, I can count!
...
llvm-svn: 109786
2010-07-29 18:19:50 +00:00
Argyrios Kyrtzidis
d67d4cc82f
Implement PCH support for offsetof(base-specifier).
...
llvm-svn: 109785
2010-07-29 18:16:10 +00:00
Argyrios Kyrtzidis
c81af03fb3
Merge PCHWriterDecl.cpp's isRequiredDecl and CodeGenModule::MayDeferGeneration into a new function,
...
DeclIsRequiredFunctionOrFileScopedVar.
This is essentially a CodeGen predicate that is also needed by the PCH mechanism to determine whether a decl
needs to be deserialized during PCH loading for codegen purposes.
Since this logic is shared by CodeGen and the PCH mechanism, move it to the ASTContext,
thus CodeGenModule's GetLinkageForFunction/GetLinkageForVariable and the GVALinkage enum is moved out of CodeGen.
This fixes current (and avoids future) codegen-from-PCH bugs.
llvm-svn: 109784
2010-07-29 18:15:58 +00:00
Chris Lattner
7f4b81af7a
fix rdar://8251384, another case where we could access beyond the
...
end of a struct. This improves the case when the struct being passed
contains 3 floats, either due to a struct or array of 3 things. Before
we'd generate this IR for the testcase:
define float @bar(double %X.coerce0, double %X.coerce1) nounwind {
entry:
%X = alloca %struct.foof, align 8 ; <%struct.foof*> [#uses=2]
%0 = bitcast %struct.foof* %X to %1* ; <%1*> [#uses=2]
%1 = getelementptr %1* %0, i32 0, i32 0 ; <double*> [#uses=1]
store double %X.coerce0, double* %1
%2 = getelementptr %1* %0, i32 0, i32 1 ; <double*> [#uses=1]
store double %X.coerce1, double* %2
%tmp = getelementptr inbounds %struct.foof* %X, i32 0, i32 2 ; <float*> [#uses=1]
%tmp1 = load float* %tmp ; <float> [#uses=1]
ret float %tmp1
}
which compiled (with optimization) to:
_bar: ## @bar
## BB#0: ## %entry
movd %xmm1, %rax
movd %eax, %xmm0
ret
Now we produce:
define float @bar(double %X.coerce0, float %X.coerce1) nounwind {
entry:
%X = alloca %struct.foof, align 8 ; <%struct.foof*> [#uses=2]
%0 = bitcast %struct.foof* %X to %0* ; <%0*> [#uses=2]
%1 = getelementptr %0* %0, i32 0, i32 0 ; <double*> [#uses=1]
store double %X.coerce0, double* %1
%2 = getelementptr %0* %0, i32 0, i32 1 ; <float*> [#uses=1]
store float %X.coerce1, float* %2
%tmp = getelementptr inbounds %struct.foof* %X, i32 0, i32 2 ; <float*> [#uses=1]
%tmp1 = load float* %tmp ; <float> [#uses=1]
ret float %tmp1
}
and:
_bar: ## @bar
## BB#0: ## %entry
movaps %xmm1, %xmm0
ret
llvm-svn: 109776
2010-07-29 18:13:09 +00:00
Chris Lattner
c95a398947
start setting up infrastructure for passing multi-floats
...
as <2 x float> instead of as double. The backend isn't ready
yet, but infrastructure in the frontend can come up.
llvm-svn: 109768
2010-07-29 17:49:08 +00:00
Chris Lattner
1c56d9ab56
rename Get8ByteTypeAtOffset -> GetINTEGERTypeAtOffset to
...
make it clear that this function should only return a type
that the codegen will classify the same as an INTEGER type.
llvm-svn: 109763
2010-07-29 17:40:35 +00:00
Chris Lattner
3f76342cfc
handle a case where we could access off the end of a function
...
that Eli pointed out, rdar://8249586
llvm-svn: 109762
2010-07-29 17:34:39 +00:00
Chris Lattner
cd84084f02
fix PR7742 / rdar://8250764, a miscompilation of struct
...
return where the struct has a base but no fields. This
was because the x86-64 abi logic was checking the wrong
predicate in one place.
This was introduced in r91874, which was a fix for PR5831,
which lacked a CHECK line, so I verified and added it.
llvm-svn: 109759
2010-07-29 17:04:54 +00:00
Fariborz Jahanian
c15dfd8a87
Tigthen the condition for issung ivar shadowing
...
variables to those in file scope (nonfragile-abi2).
Fixes radar 8248681.
llvm-svn: 109758
2010-07-29 16:53:53 +00:00
Douglas Gregor
e9bf2d159c
When dynamic_cast'ing from a type to itself, fill in the cast kind
...
with CK_NoOp. Fixes PR7727.
llvm-svn: 109757
2010-07-29 16:12:45 +00:00
Peter Collingbourne
029fd693cf
Implement RedeclarableTemplateDecl::getNextRedeclaration
...
This patch uses the newly added Latest field of CommonBase to provide
a getNextRedeclaration() implementation for RedeclarableTemplateDecl.
llvm-svn: 109756
2010-07-29 16:12:09 +00:00
Peter Collingbourne
2bf3d24ca1
Store latest redeclaration for each redeclarable template declaration
...
This patch adds a Latest field to RedeclarableTemplateDecl's CommonBase
class which is used to store the latest redeclaration.
llvm-svn: 109755
2010-07-29 16:12:01 +00:00
Peter Collingbourne
91b25b7419
Refactor redeclarable template declarations
...
This patch refactors much of the common code in ClassTemplateDecl and
FunctionTemplateDecl into a common base class RedeclarableTemplateDecl
together with support functions in a template class RedeclarableTemplate.
The patch also includes similar refactoring for these classes' PCH
reader and writer implementations.
llvm-svn: 109754
2010-07-29 16:11:51 +00:00
Douglas Gregor
0bdcb8a239
When taking the address of a value of Objective-C object type (e.g.,
...
one because we're referencing a variable of type NSString &), the
resulting type is an ObjCObjectPointerType.
llvm-svn: 109753
2010-07-29 16:05:45 +00:00
Douglas Gregor
17ea3f5dbd
Allow a looser form of compatibility checking (which ignores
...
qualifiers) when checking a K&R function definition against a previous
prototype. Fixes <rdar://problem/8193107>.
llvm-svn: 109751
2010-07-29 15:18:02 +00:00
Douglas Gregor
f65f490ae9
When deleting a value of class type, make sure that type is complete
...
before looking for conversions to pointer type. Fixes <rdar://problem/8248780>.
llvm-svn: 109749
2010-07-29 14:44:35 +00:00
Douglas Gregor
da2955ed74
Reword the empty struct/union warning in C to note that such structs and unions have size 0 in C, size 1 in C++. Put this warning under -Wc++-compat.
...
llvm-svn: 109748
2010-07-29 14:29:34 +00:00
Chris Lattner
98076a25ce
This is a little bit far, but optimize cases like:
...
struct a {
struct c {
double x;
int y;
} x[1];
};
void foo(struct a A) {
}
into:
define void @foo(double %A.coerce0, i32 %A.coerce1) nounwind {
entry:
%A = alloca %struct.a, align 8 ; <%struct.a*> [#uses=1]
%0 = bitcast %struct.a* %A to %struct.c* ; <%struct.c*> [#uses=2]
%1 = getelementptr %struct.c* %0, i32 0, i32 0 ; <double*> [#uses=1]
store double %A.coerce0, double* %1
%2 = getelementptr %struct.c* %0, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %A.coerce1, i32* %2
instead of:
define void @foo(double %A.coerce0, i64 %A.coerce1) nounwind {
entry:
%A = alloca %struct.a, align 8 ; <%struct.a*> [#uses=1]
%0 = bitcast %struct.a* %A to %0* ; <%0*> [#uses=2]
%1 = getelementptr %0* %0, i32 0, i32 0 ; <double*> [#uses=1]
store double %A.coerce0, double* %1
%2 = getelementptr %0* %0, i32 0, i32 1 ; <i64*> [#uses=1]
store i64 %A.coerce1, i64* %2
I only do this now because I never want to look at this code again :)
llvm-svn: 109738
2010-07-29 07:43:55 +00:00
Chris Lattner
c8b7b53a1e
implement a todo: pass a eight-byte that consists of a
...
small integer + padding as that small integer. On code
like:
struct c { double x; int y; };
void bar(struct c C) { }
This means that we compile to:
define void @bar(double %C.coerce0, i32 %C.coerce1) nounwind {
entry:
%C = alloca %struct.c, align 8 ; <%struct.c*> [#uses=2]
%0 = getelementptr %struct.c* %C, i32 0, i32 0 ; <double*> [#uses=1]
store double %C.coerce0, double* %0
%1 = getelementptr %struct.c* %C, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %C.coerce1, i32* %1
instead of:
define void @bar(double %C.coerce0, i64 %C.coerce1) nounwind {
entry:
%C = alloca %struct.c, align 8 ; <%struct.c*> [#uses=3]
%0 = bitcast %struct.c* %C to %0* ; <%0*> [#uses=2]
%1 = getelementptr %0* %0, i32 0, i32 0 ; <double*> [#uses=1]
store double %C.coerce0, double* %1
%2 = getelementptr %0* %0, i32 0, i32 1 ; <i64*> [#uses=1]
store i64 %C.coerce1, i64* %2
which gives SRoA heartburn.
This implements rdar://5711709, a nice low number :)
llvm-svn: 109737
2010-07-29 07:30:00 +00:00
Chris Lattner
2cdfda44a1
fix a builder, why didn't clang++ catch this?
...
llvm-svn: 109735
2010-07-29 06:44:09 +00:00
Jordy Rose
daa1c83413
Use a LazyCompoundVal to handle initialization with a string literal, rather than copying each character.
...
llvm-svn: 109734
2010-07-29 06:40:33 +00:00
Chris Lattner
fe34c1d53e
Kill off the 'coerce' ABI passing form. Now 'direct' and 'extend' always
...
have a "coerce to" type which often matches the default lowering of Clang
type to LLVM IR type, but the coerce case can be handled by making them
not be the same.
This simplifies things and fixes issues where X86-64 abi lowering would
return coerce after making preferred types exactly match up. This caused
us to compile:
typedef float v4f32 __attribute__((__vector_size__(16)));
v4f32 foo(v4f32 X) {
return X+X;
}
into this code at -O0:
define <4 x float> @foo(<4 x float> %X.coerce) nounwind {
entry:
%retval = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=2]
%coerce = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=2]
%X.addr = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=3]
store <4 x float> %X.coerce, <4 x float>* %coerce
%X = load <4 x float>* %coerce ; <<4 x float>> [#uses=1]
store <4 x float> %X, <4 x float>* %X.addr
%tmp = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%tmp1 = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%add = fadd <4 x float> %tmp, %tmp1 ; <<4 x float>> [#uses=1]
store <4 x float> %add, <4 x float>* %retval
%0 = load <4 x float>* %retval ; <<4 x float>> [#uses=1]
ret <4 x float> %0
}
Now we get:
define <4 x float> @foo(<4 x float> %X) nounwind {
entry:
%X.addr = alloca <4 x float>, align 16 ; <<4 x float>*> [#uses=3]
store <4 x float> %X, <4 x float>* %X.addr
%tmp = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%tmp1 = load <4 x float>* %X.addr ; <<4 x float>> [#uses=1]
%add = fadd <4 x float> %tmp, %tmp1 ; <<4 x float>> [#uses=1]
ret <4 x float> %add
}
This implements rdar://8248065
llvm-svn: 109733
2010-07-29 06:26:06 +00:00
Chris Lattner
9fa15c3608
ignore structs that wrap vectors in IR, the abstraction shouldn't add penalty.
...
Before we'd compile the example into something like:
%coerce.dive2 = getelementptr %struct.v4f32wrapper* %retval, i32 0, i32 0 ; <<4 x float>*> [#uses=1]
%1 = bitcast <4 x float>* %coerce.dive2 to <2 x double>* ; <<2 x double>*> [#uses=1]
%2 = load <2 x double>* %1, align 1 ; <<2 x double>> [#uses=1]
ret <2 x double> %2
Now we produce:
%coerce.dive2 = getelementptr %struct.v4f32wrapper* %retval, i32 0, i32 0 ; <<4 x float>*> [#uses=1]
%0 = load <4 x float>* %coerce.dive2, align 1 ; <<4 x float>> [#uses=1]
ret <4 x float> %0
llvm-svn: 109732
2010-07-29 05:02:29 +00:00
Chris Lattner
4200fe4e50
move the 'pretty 16-byte vector' inferring code up to be shared
...
with return values, improving stuff that returns __m128 etc.
llvm-svn: 109731
2010-07-29 04:56:46 +00:00
Chris Lattner
ce1bd754d8
simplify code by eliminating a premature optimization.
...
llvm-svn: 109730
2010-07-29 04:51:12 +00:00
Chris Lattner
3a44c7e55d
now that we have CGT around, we can start using preferred types
...
for return values too. Instead of compiling something like:
struct foo {
int *X;
float *Y;
};
struct foo test(struct foo *P) { return *P; }
to:
%1 = type { i64, i64 }
define %1 @test(%struct.foo* %P) nounwind {
entry:
%retval = alloca %struct.foo, align 8 ; <%struct.foo*> [#uses=2]
%P.addr = alloca %struct.foo*, align 8 ; <%struct.foo**> [#uses=2]
store %struct.foo* %P, %struct.foo** %P.addr
%tmp = load %struct.foo** %P.addr ; <%struct.foo*> [#uses=1]
%tmp1 = bitcast %struct.foo* %retval to i8* ; <i8*> [#uses=1]
%tmp2 = bitcast %struct.foo* %tmp to i8* ; <i8*> [#uses=1]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 16, i32 8, i1 false)
%0 = bitcast %struct.foo* %retval to %1* ; <%1*> [#uses=1]
%1 = load %1* %0, align 1 ; <%1> [#uses=1]
ret %1 %1
}
We now get the result more type safe, with:
define %struct.foo @test(%struct.foo* %P) nounwind {
entry:
%retval = alloca %struct.foo, align 8 ; <%struct.foo*> [#uses=2]
%P.addr = alloca %struct.foo*, align 8 ; <%struct.foo**> [#uses=2]
store %struct.foo* %P, %struct.foo** %P.addr
%tmp = load %struct.foo** %P.addr ; <%struct.foo*> [#uses=1]
%tmp1 = bitcast %struct.foo* %retval to i8* ; <i8*> [#uses=1]
%tmp2 = bitcast %struct.foo* %tmp to i8* ; <i8*> [#uses=1]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp1, i8* %tmp2, i64 16, i32 8, i1 false)
%0 = load %struct.foo* %retval ; <%struct.foo> [#uses=1]
ret %struct.foo %0
}
That memcpy is completely terrible, but I don't know how to fix it.
llvm-svn: 109729
2010-07-29 04:46:19 +00:00
Chris Lattner
029c0f1681
sink preferred type stuff lower. It's possible that this might
...
improve codegen for vaarg or something, because its codepath is
getting preferred types now.
llvm-svn: 109728
2010-07-29 04:41:05 +00:00
Daniel Dunbar
51738ba43e
Transcribe clattner email to SVN.
...
llvm-svn: 109727
2010-07-29 02:46:02 +00:00
Chris Lattner
22326a10a7
dissolve some more complexity: make the x86-64 abi lowering code
...
compute its own preferred types instead of having CGT compute
them then pass them (circuituously) down into ABIInfo.
llvm-svn: 109726
2010-07-29 02:31:05 +00:00
Daniel Dunbar
e11281077d
Change #pragma crash to segv, instead of abort.
...
llvm-svn: 109725
2010-07-29 02:25:07 +00:00
Chris Lattner
c11301c76e
simplify Get8ByteTypeAtOffset by making it a member of X86_64ABIInfo
...
llvm-svn: 109724
2010-07-29 02:20:19 +00:00
Chris Lattner
458b2aaee0
now that ABIInfo depends on CGT, it has trivial access to such
...
things as TargetData, ASTContext, LLVMContext etc. Stop passing
them through so many APIs.
llvm-svn: 109723
2010-07-29 02:16:43 +00:00
Chris Lattner
2b03797222
cave in to reality and make ABIInfo depend on CodeGenTypes.
...
This will simplify a bunch of code, coming up next.
llvm-svn: 109722
2010-07-29 02:01:43 +00:00
Ted Kremenek
8bedb7dd3f
Teach GRExprEngine::VisitLValue() about FloatingLiteral, ImaginaryLiteral, and CharacterLiteral. Fixes an assertion failure reported in PR 7675.
...
llvm-svn: 109719
2010-07-29 01:31:59 +00:00
Ted Kremenek
385f71b1f4
Augment RegionStore::BindStruct() to bind symbolicated struct values. This fixes a false path issue reported in <rdar://problem/8243408> and also spurs another cause where the idempotent operations checker fires.
...
llvm-svn: 109710
2010-07-29 00:28:47 +00:00
Ted Kremenek
7f904e8ad5
Change SymbolManager::canSymbolicate() to return true for RecordTypes.
...
llvm-svn: 109709
2010-07-29 00:28:43 +00:00
Ted Kremenek
ab178fa678
Explicitly guard in BasicStore from storing to non-scalars.
...
llvm-svn: 109708
2010-07-29 00:28:40 +00:00
Ted Kremenek
1008a2a3d5
Remove extraneous guards around the call to getConjuredSymbolVal(). These checks are already done within getConjuredSymbolVal() itself.
...
llvm-svn: 109707
2010-07-29 00:28:33 +00:00
Douglas Gregor
43397fc4dc
Don't set out-of-line template specialization/definition information
...
for AST nodes that aren't actually out-of-line (i.e., require a
nested-name-specifier). Fixes <rdar://problem/8204126>.
llvm-svn: 109704
2010-07-28 23:59:57 +00:00
Chris Lattner
f4ba08aeaf
pass argument vectors in a type that corresponds to the user type if
...
possible. This improves the example to pass <4 x float> instead of
<2 x double> but we still get awful code, and still don't get the
return value right.
llvm-svn: 109700
2010-07-28 23:47:21 +00:00
Chris Lattner
4b8585ef6a
tidy up
...
llvm-svn: 109699
2010-07-28 23:46:15 +00:00
Fariborz Jahanian
e6a4e3933d
Initialize block's imported variable(s) in
...
block's synthesized constructor initalizer list.
Fixes radar 8240371.
llvm-svn: 109698
2010-07-28 23:27:30 +00:00
Devang Patel
c7f16ab3e3
Override selected builtin names (e.g. "long int" instead of "long") to match names used by gcc in debug info. This makes gdb testsuite happy.
...
llvm-svn: 109694
2010-07-28 23:23:29 +00:00
Chris Lattner
fa560fedb7
fix some break statements to be formatted more consistently,
...
remove some now-dead code.
llvm-svn: 109690
2010-07-28 23:12:33 +00:00
Chris Lattner
31faff5d58
use Get8ByteTypeAtOffset for the return value path as well so we
...
don't get errors similar to PR7714 on the return path.
llvm-svn: 109689
2010-07-28 23:06:14 +00:00
Chris Lattner
b22f1c8bf7
refactor the autosizing code, eliminating duplication
...
and making Get8ByteTypeAtOffset always succeed and documented.
llvm-svn: 109685
2010-07-28 22:44:07 +00:00
Douglas Gregor
a9c3e82755
Don't die when a member access refers to a non-class member via a
...
qualified name. Fixes <rdar://problem/8231724>.
llvm-svn: 109682
2010-07-28 22:27:52 +00:00
Chris Lattner
4c1e484f39
fix PR7714 by not referencing off the end of a struct when passed by value in
...
x86-64 abi. This also improves codegen as well. Some refactoring is needed of
this code.
llvm-svn: 109681
2010-07-28 22:15:08 +00:00
Douglas Gregor
a5fd522992
Turn off precompiled preamble support for C++
...
llvm-svn: 109680
2010-07-28 22:12:37 +00:00
Douglas Gregor
85b5063f2c
When performing code completion for a case statement in a switch whose
...
condition is not of enumeration type, provide code-completion results
containing all values of integral or enumeral type.
llvm-svn: 109677
2010-07-28 21:50:18 +00:00
Sebastian Redl
04f5c31e98
Support extended vector types in chained PCH.
...
llvm-svn: 109675
2010-07-28 21:38:49 +00:00
Sebastian Redl
887d6b08fd
Add a test case for tentative definitions in chained PCH. Fix a bug that completely messed up source locations and thus caused a crash whenever a diagnostic was emitted in chained PCH files.
...
llvm-svn: 109660
2010-07-28 21:07:02 +00:00
Fariborz Jahanian
d5010898ab
Fix flags in global block descriptor when
...
block returns structs. Fies radar 8241648.
Executable test added to llvm test suite.
llvm-svn: 109620
2010-07-28 19:07:18 +00:00
Chris Lattner
ff941a666a
some cleanups and get alignments correct for various coerce cases.
...
llvm-svn: 109607
2010-07-28 18:24:28 +00:00
Douglas Gregor
5dc055350e
The grammar for GNU typeof in C requires an expression to be
...
parenthesized, unlike in C++, e.g.,
C has: typeof ( expression)
C++ has: typeof unary-expression
So, once we've parsed a parenthesized expression after typeof, we
should only go on to parse the postfix expression suffix if we're in
C++. Fixes <rdar://problem/8237491>.
llvm-svn: 109606
2010-07-28 18:22:12 +00:00
Daniel Dunbar
b8068c33e2
Preprocessor: Add support for '#pragma clang __debug crash' and '#pragma clang
...
__debug overflow_stack'.
- For testing crash reporting stuff... you'd think I could just use some C++
code but Doug keeps fixing stuff!
llvm-svn: 109587
2010-07-28 15:40:33 +00:00
Douglas Gregor
bbfd2c0a86
Enable expression transformations in the current-instantiation
...
rebuilder, i.e., remove a silly short-sighted hack from long
ago. Thanks to Abramo Bagnara for the test case/bug report!
llvm-svn: 109583
2010-07-28 15:14:14 +00:00
Douglas Gregor
df65c8ed2a
When a nested-name-specifier refers into a current instantiation that has
...
dependent bases, construct a dependent nested-name-specifier rather
than complaining that the name could not be found within the current
instantiation itself. Fixes PR7725.
llvm-svn: 109582
2010-07-28 14:49:07 +00:00
Gabor Greif
79ac9ed7ac
we are not supposed to create an improper callsite using a CallInstr; leave a fixme mentioning the simplification when CallSite can clone itself
...
llvm-svn: 109575
2010-07-28 09:19:33 +00:00
Devang Patel
a652fab052
construct debug info for "id" by hand.
...
Tested by mi1-var-obj.exp in gdb testsuite.
llvm-svn: 109571
2010-07-28 01:33:15 +00:00
John McCall
ba80390307
When creating a jump destination, its scope should be the scope of the
...
enclosing normal cleanup, not the top of the EH stack. I'm *really*
surprised this hasn't been causing more problems.
Fixes rdar://problem/8231514.
llvm-svn: 109569
2010-07-28 01:07:35 +00:00
Tom Care
29a6250bf0
Added some false positive checking to UnreachableCodeChecker
...
- Allowed reporting of dead macros
- Added path walking function to search for false positives in conditional statements
- Updated some affected tests
- Added some false positive test cases
llvm-svn: 109561
2010-07-27 23:30:21 +00:00
Tom Care
76bdd685c2
Extracted out some useful common functions in IdempotentOperationChecker to their own CheckerHelpers file.
...
llvm-svn: 109560
2010-07-27 23:26:07 +00:00
Sebastian Redl
9891212476
Record macros in dependent PCHs. Also add various info tables to dependent PCHs; tests for this to follow.
...
llvm-svn: 109554
2010-07-27 23:01:28 +00:00
Argyrios Kyrtzidis
c0279a9826
Revert r109546, it broke linux build.
...
llvm-svn: 109550
2010-07-27 22:37:14 +00:00
Argyrios Kyrtzidis
4fac280618
Merge PCHWriterDecl.cpp's isRequiredDecl and CodeGenModule::MayDeferGeneration into a new function,
...
DeclIsRequiredFunctionOrFileScopedVar.
This function is part of the public CodeGen interface since it's essentially a CodeGen predicate that is also
needed by the PCH mechanism to determine whether a decl needs to be deserialized during PCH loading for codegen purposes.
This fixes current (and avoids future) codegen-from-PCH bugs.
llvm-svn: 109546
2010-07-27 22:01:17 +00:00
Eli Friedman
7530049b16
Fix a minor crash bug with constructs like Obj.Class::ENUM_VALUE.
...
llvm-svn: 109537
2010-07-27 20:51:02 +00:00
Devang Patel
4f6e73b168
Always use current working directory for DW_AT_comp_dir.
...
llvm-svn: 109535
2010-07-27 20:49:59 +00:00
Eli Friedman
6b197e0651
PR7724: Don't try to evaluate value-dependent expressions.
...
llvm-svn: 109532
2010-07-27 19:14:53 +00:00
Ted Kremenek
83b598c14f
Finesse 'idempotent operations' analyzer issues to include the opcode of the binary operator for clearer error reporting. Also remove the 'Idempotent operation' prefix in messages; it's redundant since the bug type is the same.
...
llvm-svn: 109527
2010-07-27 18:49:08 +00:00
Sebastian Redl
4b1f490860
Update the list of lexical decls in the TU for chained PCHs. This makes -ast-print show the decls from the dependent PCH.
...
llvm-svn: 109524
2010-07-27 18:24:41 +00:00
Ted Kremenek
e5cc6a858a
Put 'Idempotent operations' static analyzer issues in the 'Dead code' category.
...
llvm-svn: 109517
2010-07-27 17:52:52 +00:00
Devang Patel
6014edd117
Reapply 109303.
...
llvm-svn: 109507
2010-07-27 15:17:16 +00:00
Douglas Gregor
96c042616e
Fix use-after-free with precompiled preambles
...
llvm-svn: 109505
2010-07-27 14:52:07 +00:00
Argyrios Kyrtzidis
76314d1ea8
Always deserialize from PCH file scoped variables with non trivial constructor/destructor.
...
Fixes http://llvm.org/PR7692
llvm-svn: 109501
2010-07-27 12:56:10 +00:00
Michael J. Spencer
2c35bc1232
Revert r109428 "Hoist argument type checking into CheckFormatHandler. This is prep for scanf format"
...
Got errors about ASTContext being undefined with Visual Studio 2010.
llvm-svn: 109491
2010-07-27 04:46:02 +00:00
Jordy Rose
55442abee6
Don't warn about unreachable code if the block starts with __builtin_unreachable().
...
The next step is to warn if a block labeled unreachable is, in fact, reachable. Somewhat related to PR810.
llvm-svn: 109487
2010-07-27 03:39:53 +00:00
Ted Kremenek
2bd41d1e30
Add PTHLexer::LexEndOfFile() to emit diagnostics at end-of-file similar to those by Lexer::LexEndOfFile().
...
llvm-svn: 109486
2010-07-27 02:59:02 +00:00
Ted Kremenek
fee882ac95
PTH generation: Don't save the leading '#' token in a null directive. This unbreaks using PTH with Boost (<rdar://problem/8227989>).
...
llvm-svn: 109484
2010-07-27 02:58:57 +00:00
Jordy Rose
b052e8f436
Groundwork for C string length tracking. Currently only handles the length of constant string literals, which is not too helpful, and only calls to strlen() are checked.
...
llvm-svn: 109480
2010-07-27 01:37:31 +00:00
Douglas Gregor
ce3a8293a0
Implement -fno-validate-pch at the -cc1 level, which suppresses most
...
of the usual consistency checks used to determine when a precompiled
header is incompatible with the translation unit it's being loaded
into.
Enable this option when loading a precompiled preamble, because the
preamble loader will be performing all of this checking itself. Enable
the preamble-based test now that it's working.
This option is also useful for debugging Clang's PCH
(<rdar://problem/7532213>).
llvm-svn: 109475
2010-07-27 00:27:13 +00:00
Sebastian Redl
66c5eef182
- Fix recording of offsets of types in dependent PCHs.
...
- Stop reading in (and thus deserializing) every declaration in the TU when creating a dependent PCH.
- Switch the storage of a decl context's lexical declarations to a blob containing the IDs instead of a record. This is the only sane way of supporting update records later on.
llvm-svn: 109474
2010-07-27 00:17:23 +00:00
Douglas Gregor
81c000fb6d
When remapping a virtual file, also make an entry for the file with
...
its absolute path on disk. Also, introduce a fun test for the
precompiled preamble, which almost works...
llvm-svn: 109470
2010-07-26 23:54:23 +00:00
Fariborz Jahanian
0ebca28f1d
2nd argument of __builtin_expect must be evaluated
...
if it hs side-effect to matchgcc's behaviour.
Addresses radar 8172109.
llvm-svn: 109467
2010-07-26 23:11:03 +00:00
John McCall
5cbe152ffc
Test for the presence of EH branch-throughs instead of normal branch-throughs.
...
I knew this code duplication would bite me.
llvm-svn: 109463
2010-07-26 22:44:58 +00:00
Douglas Gregor
3f4bea0646
Introduce basic support for loading a precompiled preamble while
...
reparsing an ASTUnit. When saving a preamble, create a buffer larger
than the actual file we're working with but fill everything from the
end of the preamble to the end of the file with spaces (so the lexer
will quickly skip them). When we load the file, create a buffer of the
same size, filling it with the file and then spaces. Then, instruct
the lexer to start lexing after the preamble, therefore continuing the
parse from the spot where the preamble left off.
It's now possible to perform a simple preamble build + parse (+
reparse) with ASTUnit. However, one has to disable a bunch of checking
in the PCH reader to do so. That part isn't committed; it will likely
be handled with some other kind of flag (e.g., -fno-validate-pch).
As part of this, fix some issues with null termination of the memory
buffers created for the preamble; we were trying to explicitly
NULL-terminate them, even though they were also getting implicitly
NULL terminated, leading to excess warnings about NULL characters in
source files.
llvm-svn: 109445
2010-07-26 21:36:20 +00:00
Dan Gohman
4888f1a210
Minor code simplification.
...
llvm-svn: 109443
2010-07-26 21:33:22 +00:00
Dan Gohman
0eb9c124a7
It's not necessary to call flush() on a raw_ostream immediately prior
...
to deleting it.
llvm-svn: 109441
2010-07-26 21:29:50 +00:00
Dan Gohman
28ade550f4
Fix namespace polution.
...
llvm-svn: 109440
2010-07-26 21:25:24 +00:00
Ted Kremenek
df4472bca0
Hoist argument type checking into CheckFormatHandler. This is prep for scanf format
...
string argument type checking.
llvm-svn: 109428
2010-07-26 19:45:54 +00:00
Ted Kremenek
6adb7e35ab
Consolidate #args checking for scanf/printf format strings.
...
llvm-svn: 109427
2010-07-26 19:45:42 +00:00
Devang Patel
6005082354
Revert 109303.
...
llvm-svn: 109426
2010-07-26 18:49:27 +00:00
Sebastian Redl
ae8cbb7220
Make sure that implicit qualification and derived-to-base conversions of xvalues preserve xvalue-ness. Unfortunately I have no idea how to test this property; there doesn't seem to be a syntactical construct that triggers such a conversion and still allows the distinction between prvalues and xvalues to be made.
...
llvm-svn: 109406
2010-07-26 17:52:21 +00:00
Nick Lewycky
19b9f958e1
Add source location information to C++ base specifiers.
...
llvm-svn: 109396
2010-07-26 16:56:01 +00:00
Douglas Gregor
67ca40c419
Eliminate the "minimal" and printing parser actions, which only ever
...
worked for C anyway. Also kills the -cc1 options -parse-noop and
-parse-print-callbacks.
llvm-svn: 109392
2010-07-26 04:08:02 +00:00
Benjamin Kramer
f5c4b49278
Wrap bit mangling logic for DiagMappings in its own class so it doesn't leak
...
into other code. Make it an array instead of a constant-length vector.
llvm-svn: 109384
2010-07-25 21:40:48 +00:00
Douglas Gregor
29b8e3d91c
Remove a bunch of trivial destructors
...
llvm-svn: 109382
2010-07-25 18:44:37 +00:00
Douglas Gregor
5a9310cfb9
Move Type destructor out-of-line
...
llvm-svn: 109381
2010-07-25 18:39:40 +00:00
Douglas Gregor
9c832f75c0
Remove destructors from declaration nodes
...
llvm-svn: 109380
2010-07-25 18:38:02 +00:00
Douglas Gregor
717ceeae76
I lied. Kill off a few more Destroy methods
...
llvm-svn: 109379
2010-07-25 18:32:30 +00:00
Douglas Gregor
a9b2dbc1a4
Kill off the last Destroy method in the AST library
...
llvm-svn: 109378
2010-07-25 18:23:53 +00:00
Douglas Gregor
b412e174db
Remove the vast majority of the Destroy methods from the AST library,
...
since we aren't going to be calling them ever.
llvm-svn: 109377
2010-07-25 18:17:45 +00:00
Douglas Gregor
5b11d49a7c
Make ASTContext always use the BumpPtrAllocator.
...
llvm-svn: 109375
2010-07-25 17:53:33 +00:00
Nick Lewycky
e602efc6f6
Remove emacs file mode marker on file with .cpp extension.
...
llvm-svn: 109366
2010-07-25 03:12:58 +00:00
Eli Friedman
e4686d7acf
Remove dead code.
...
llvm-svn: 109358
2010-07-24 21:35:09 +00:00
Nick Lewycky
84a11fdf57
Add header searching for llvm-gcc trunk on Gentoo AMD64. Patch by Mark Wood!
...
llvm-svn: 109357
2010-07-24 21:33:13 +00:00
Eli Friedman
9255adfb7a
PR7698: Make sure we correctly handle the initialization of an array with
...
dependent size.
llvm-svn: 109356
2010-07-24 21:19:15 +00:00
John McCall
268b576b72
Mangle enum constant expressions. Fixes rdar://problem/8204122
...
llvm-svn: 109315
2010-07-24 01:17:35 +00:00
Chris Lattner
938533db60
turn down the logical bitwise confusion warning to not warn
...
when the RHS of the ||/&& is ever 0 or 1. This handles a variety of
creative idioms for "true" used in C programs and fixes many false
positives at the expense of a few false negatives. This fixes
rdar://8230351.
llvm-svn: 109314
2010-07-24 01:10:11 +00:00
Devang Patel
268ad093a7
Untangle filename/dirname confusion. Store constructed strings on the side. Avoid use of Path.makeAbsolute().
...
DW_TAG_compile_unit uses two attributes DW_AT_name and DW_AT_comp_dir. Their expected values are:
$ clang foo.c -g
DW_AT_name - foo.c
DW_AT_comp_dir - `pwd`
$ clang one/two/foo.c -g
DW_AT_name - one/two/foo.c
DW_AT_comp_dir - `pwd`
$ clang /tmp/one/foo.c -g
DW_AT_name - /tmp/one/foo.c
DW_AT_comp_dir - empty
llvm-svn: 109303
2010-07-24 00:59:16 +00:00
Douglas Gregor
f5275a8339
Put a newline at the end of the padded buffers used for the
...
precompiled preamble. This will suppress the -pedantic "no newline at
end of file" warning.
llvm-svn: 109301
2010-07-24 00:42:07 +00:00
Douglas Gregor
6481ef1f9c
Once we've built (or reused) a precompiled preamble, create the
...
appropriately-padded main file buffer (that has spaces in the extra
"reserved" space) and thread that buffer through to the parsing
function. This still does nothing.
llvm-svn: 109299
2010-07-24 00:38:13 +00:00
John McCall
2ca705eb13
Support catching Objective C pointers in C++ under the non-fragile NeXT runtime.
...
Diagnose attempts to do this under the GNU or fragile NeXT runtimes.
llvm-svn: 109298
2010-07-24 00:37:23 +00:00
Fariborz Jahanian
72cdffa401
Return type of a setter call caused by
...
use of property-dot syntax using 'super' as receiver
is 'void'. This fixes a bug in generating correct
API for setter call. Fixes radar 8203426.
llvm-svn: 109297
2010-07-24 00:34:08 +00:00
Douglas Gregor
536f091f95
Be careful; even though we had a proper name at the beginning of
...
Sema::ActOnDeclarator doesn't mean that the Decl we ended up creating
has a useful name. <rdar://problem/8229910>
llvm-svn: 109296
2010-07-24 00:10:38 +00:00
Douglas Gregor
4dde74988e
Once we've built a precompiled preamble, keep track of the details of
...
that preamble (the preamble text, preamble file, reserved main file
size). Check these details when we try to rebuild the precompiled
preamble, and when nothing has changed, re-use the precompiled
preamble.
This code is still very much a WIP, and can't even properly be tested
because we have no way to use the precompiled preamble yet. "Trust me"
llvm-svn: 109294
2010-07-23 23:58:40 +00:00
Sebastian Redl
ff4a2951d9
Make declarations in the dependent PCH visible, for C at least.
...
llvm-svn: 109292
2010-07-23 23:49:55 +00:00
Tom Care
cba9f517ac
Added an path-sensitive unreachable code checker to the experimental analyzer checks.
...
- Created a new class to do post-analysis
- Updated several test cases with unreachable code to expect a warning
- Added some general tests
llvm-svn: 109286
2010-07-23 23:04:53 +00:00
Devang Patel
cb9fe9ec16
Revert r109263.
...
llvm-svn: 109284
2010-07-23 23:04:28 +00:00
John McCall
dd762d1e5b
We never want to pop the translation unit DC, so assert if this happens.
...
llvm-svn: 109280
2010-07-23 22:45:07 +00:00
John McCall
ad5d61e227
Revise cleanup IR generation to fix a major bug with cleanups (PR7686)
...
as well as some significant asymptotic inefficiencies with threading
multiple jumps through deep cleanups.
llvm-svn: 109274
2010-07-23 21:56:41 +00:00
Fariborz Jahanian
946274471d
Allow __func__ and __FUNCTION__ and __PRETTY_FUNCTION__ inside blocks.
...
Radar 8218839.
llvm-svn: 109272
2010-07-23 21:53:24 +00:00
Devang Patel
28f167699a
There is no need to use separate dir name for AT_comp_dir attribute. Using absolute path for filename allows clients to query complete file location info from gdb breakpoints. Save constructed full file name.
...
llvm-svn: 109263
2010-07-23 20:38:37 +00:00
Eli Friedman
d4c75cddde
Fix for PR7694: make sure to pass in a RecordType to CheckBaseClassAccess;
...
fixes crashes on both valid and invalid code. The diagnostic here could
potentially be improved, but it's good enough as-is.
llvm-svn: 109257
2010-07-23 19:25:41 +00:00
Fariborz Jahanian
c51609a0b5
PCH read/write for selector reference pool.
...
Finishes off radar 6507158.
llvm-svn: 109256
2010-07-23 19:11:11 +00:00
Douglas Gregor
5cc2c8b9c3
Vectors are not integer types, so the type system should not classify
...
them as such. Type::is(Signed|Unsigned|)IntegerType() now return false
for vector types, and new functions
has(Signed|Unsigned|)IntegerRepresentation() cover integer types and
vector-of-integer types. This fixes a bunch of latent bugs.
Patch from Anton Yartsev!
llvm-svn: 109229
2010-07-23 15:58:24 +00:00
Zhongxing Xu
5e6ef6d957
Add FILE* leak check to StreamChecker. Patch by Lei Zhang.
...
llvm-svn: 109225
2010-07-23 14:14:59 +00:00
Bill Wendling
8abd1ca8d2
Remove unneeded iostream include.
...
llvm-svn: 109219
2010-07-23 07:19:31 +00:00
Zhongxing Xu
73ede01cad
Change arg type.
...
llvm-svn: 109218
2010-07-23 05:55:01 +00:00
Zhongxing Xu
692ac46a70
Delete unnecessary const_cast.
...
llvm-svn: 109211
2010-07-23 02:54:53 +00:00
Zhongxing Xu
cabfb72654
AnalysisContext is not const.
...
llvm-svn: 109210
2010-07-23 02:49:07 +00:00
Zhongxing Xu
318e40360d
Fix build on Ubuntu 10.04.
...
llvm-svn: 109208
2010-07-23 02:15:08 +00:00
Douglas Gregor
be2d8c6096
Basic plumbing for generating a precompiled preamble for an
...
ASTUnit/CXTranslationUnit. We can't actually use this preamble yet,
however.
llvm-svn: 109202
2010-07-23 00:33:23 +00:00
Fariborz Jahanian
86151343b4
Warn when property ivar lookup finds a global variable
...
of same name. In nonfragile-abi2, lookup accesses a synthesized
ivar. This is a transition warning. Radar 8225011.
llvm-svn: 109197
2010-07-22 23:33:21 +00:00
Sebastian Redl
c67764eb4b
Thread bitstream cursors all the way through the AST reading stuff. This way, reading a trivial 2-element chained file actually works.
...
llvm-svn: 109191
2010-07-22 22:43:28 +00:00
Devang Patel
0884a60eb5
Keep track of artificial scopes introduced by line directives. For example,
...
#line 41 "bar.c"
dummy (1, i);
#line 24 "bar.h"
i = f2 (i);
#line 44 "bar.c"
This is tested by step-line.exp in gdb testsuite.
llvm-svn: 109189
2010-07-22 22:29:16 +00:00
John McCall
775f9f9919
Turn off EH cleanups for __block variables; they caused some internal buildbot
...
failures. There's a radar tracking this.
llvm-svn: 109170
2010-07-22 21:25:44 +00:00
Douglas Gregor
cd8bdd025f
Improve performance during cursor traversal when a region of interest
...
is present.
Rather than using clang_getCursorExtent(), which requires
us to lex the token at the ending position to determine its
length. Then, we'd be comparing [a, b) source ranges that cover the
characters in the range rather than the normal behavior for Clang's
source ranges, which covers the tokens in the range. However, relexing
causes us to read the source file (which may come from a precompiled
header), which is rather unfortunate and affects performance.
In the new scheme, we only use Clang-style source ranges that cover
the tokens in the range. At the entry points where this matters
(clang_annotateTokens, clang_getCursor), we make sure to move source
locations to the start of the token.
Addresses most of <rdar://problem/8049381>.
llvm-svn: 109134
2010-07-22 20:22:31 +00:00
Fariborz Jahanian
6e7e8cc19d
atch for implementation of objective-c's -Wselector
...
warning flag in clang. Little more to do
for a PCH issue. Radar 6507158.
llvm-svn: 109129
2010-07-22 18:24:20 +00:00
Argyrios Kyrtzidis
2d8891cd5d
Read/write C++0x static_assert for PCH.
...
llvm-svn: 109123
2010-07-22 17:28:12 +00:00
Sebastian Redl
5c415f3e32
Allow loading declcontext information from any file in the chain. Properly write source locations to dependent files. WIP
...
llvm-svn: 109119
2010-07-22 17:01:13 +00:00
Argyrios Kyrtzidis
165b58181f
Read/write FriendTemplateDecl for PCH.
...
llvm-svn: 109113
2010-07-22 16:04:10 +00:00
Argyrios Kyrtzidis
47cd7a91f4
Support C++ try/catch statements for PCH.
...
llvm-svn: 109112
2010-07-22 16:03:56 +00:00
Zhongxing Xu
f0c133fe88
This patch adds support for tmpfile in StreamChecker. Patch by Lei Zhang.
...
llvm-svn: 109106
2010-07-22 14:01:01 +00:00
Zhongxing Xu
adf644d05e
Make a bunch of new data structures for the new analysis
...
engine of the new translation unit. State marshal is there but no real
work is done. End nodes are passed back.
llvm-svn: 109105
2010-07-22 13:52:13 +00:00
Chandler Carruth
3c31aa3a44
Fix PR7673 by allowing an empty clobbers section in an ASM statement.
...
llvm-svn: 109087
2010-07-22 07:11:21 +00:00
Chandler Carruth
96f2e9e418
Add alternate names for x86 SIMD intrinsics. These aren't as common, but show
...
up enough to be worth supporting properly. Fixes PR7674.
llvm-svn: 109086
2010-07-22 06:47:28 +00:00
Daniel Dunbar
6d48476446
Driver/Darwin: Set -force_cpusubtype_ALL only by default on x86.
...
llvm-svn: 109074
2010-07-22 01:47:22 +00:00
Daniel Dunbar
43d74a3b02
build: Make sure arm_neon.h gets installed.
...
llvm-svn: 109073
2010-07-22 01:19:36 +00:00