Ted Kremenek
5739de77fa
Add precision/field width checking to AlternateCheckPrintfString().
...
llvm-svn: 94774
2010-01-29 01:06:55 +00:00
Ted Kremenek
b5c98ef61e
Fix off-by-one error in ParseFormatSpecifier() when reporting the location of a null character.
...
llvm-svn: 94762
2010-01-28 23:56:52 +00:00
Ted Kremenek
ab278de2d1
Start fleshing out Sema::AlternateCheckPrintfString():
...
- Add an anonymous class 'CheckPrintfHandler' which will do the
checking of specific format specifiers
- Add checking for using the '@' conversion specifier outside
an ObjC string literal
- Add checking for null characters within the string
llvm-svn: 94761
2010-01-28 23:39:18 +00:00
Devang Patel
7bfc596fcf
s/CGDebugInfo::getContext/CGDebugInfo::getContextDescriptor/g to avoid confusion.
...
llvm-svn: 94760
2010-01-28 23:15:27 +00:00
Devang Patel
128aa9d176
Fix indentation.
...
llvm-svn: 94758
2010-01-28 21:54:15 +00:00
Devang Patel
4c3e7e99ca
Static methods do not need "this" pointer argument.
...
llvm-svn: 94756
2010-01-28 21:43:50 +00:00
Devang Patel
946edc1aa6
Emit base classes info first, as expected by the debugger.
...
llvm-svn: 94755
2010-01-28 21:41:35 +00:00
Anders Carlsson
b1ef991097
Fix an incorrect union layout assert. Fixes PR6164.
...
llvm-svn: 94754
2010-01-28 18:22:03 +00:00
Devang Patel
0d61eebd81
s/FunctionNames/DebugInfoNames/g
...
llvm-svn: 94753
2010-01-28 18:21:00 +00:00
Devang Patel
84033fb240
Emit vtable info.
...
llvm-svn: 94751
2010-01-28 18:11:52 +00:00
John McCall
2cb941642e
Access control for surrogate function calls. Required a moderately gross hack
...
to get the access bits set properly in conversion sets.
llvm-svn: 94744
2010-01-28 07:38:46 +00:00
Douglas Gregor
ac0605e927
Introduce serialization and deserialization of diagnostic information
...
so that CIndex can report diagnostics through the normal mechanisms
even when executing Clang in a separate process. This applies both
when performing code completion and when using ASTs as an intermediary
for clang_createTranslationUnitFromSourceFile().
The serialized format is not perfect at the moment, because it does
not encapsulate macro-instantiation information. Instead, it maps all
source locations back to the instantiation location. However, it does
maintain source-range and fix-it information. To get perfect fidelity
from the serialized format would require serializing a large chunk of
the source manager; at present, it isn't clear if this code will live
long enough for that to matter.
llvm-svn: 94740
2010-01-28 06:00:51 +00:00
Ted Kremenek
fee0e96c82
Add position of conversion specifier character to 'ConversionSpecifier'.
...
llvm-svn: 94739
2010-01-28 02:46:17 +00:00
Ted Kremenek
08ad1cceb3
Rename namespace clang::printf to clang::analyze_printf to avoid problems where the reference to 'printf' is ambiguous.
...
llvm-svn: 94733
2010-01-28 02:02:59 +00:00
John McCall
49ec2e694c
Access control for overloaded call operators. Not for surrogates yet,
...
mostly because we're going to want a better diagnostic for conversions.
Also this API needs to go back to sanity.
llvm-svn: 94730
2010-01-28 01:54:34 +00:00
John McCall
b3a4400554
Access checking for overloaded operators.
...
llvm-svn: 94725
2010-01-28 01:42:12 +00:00
Fariborz Jahanian
81310810bd
Fixes a rewrite bug rewriting nested ivars reference.
...
(Radar 7583971).
llvm-svn: 94724
2010-01-28 01:41:20 +00:00
Ted Kremenek
c70ee8610d
Add placeholder function in Sema for new format string checking logic.
...
This function will use the format string parsing logic in libAnalysis,
and once it is shown to be better than the current implementation it
will replace AlternateCheckPrintfString() entirely.
llvm-svn: 94721
2010-01-28 01:18:22 +00:00
Ted Kremenek
e4fd3300c9
Fix 80 col violation.
...
llvm-svn: 94717
2010-01-28 01:04:48 +00:00
Ted Kremenek
bcbdaea703
Allow HandleFormatSpecifier() to indicate that no more processing of the format string is desired.
...
llvm-svn: 94715
2010-01-28 01:00:59 +00:00
Ted Kremenek
c06ead62f0
Add '@' conversion specifier.
...
llvm-svn: 94713
2010-01-28 00:55:28 +00:00
Devang Patel
abb4413728
While emitting debugging infor for a C++ class, identify the holder of class's vtable, if any.
...
llvm-svn: 94712
2010-01-28 00:54:21 +00:00
Devang Patel
3d4e6d9dd0
Include "this" pointer argument while emitting debug info for a C++ method.
...
llvm-svn: 94710
2010-01-28 00:28:01 +00:00
Ted Kremenek
fa784e88e8
Remove invalid conversion specifiers from format string checking.
...
llvm-svn: 94707
2010-01-28 00:17:51 +00:00
Ted Kremenek
c8d9c01f04
Add a few more conversion specifiers to ParseFormatSpecifier (these appear in SemaChecking).
...
llvm-svn: 94704
2010-01-28 00:02:05 +00:00
Ted Kremenek
a2e77b41f3
Add skeleton for a more structured way to analyzing pring format
...
strings than what we currently have in Sema. This is both an
experiment and a WIP.
The idea is simple: parse the format string incrementally,
constructing a well-structure representation of each format specifier.
Each format specifier is then handed back one-by-one to a client via a
callback. Malformed format strings are also handled with callbacks.
The idea is to separate the parsing of the format string from the
emission of diagnostics. Currently what we have in Sema for handling
format strings is a mongrel of both that is hard to follow and
difficult to modify (I can apply this label since I'm the original
author of that code).
This is in libAnalysis as it is reasonable generic and can potentially
be used both by libSema and libChecker.
Comments welcome.
llvm-svn: 94702
2010-01-27 23:43:25 +00:00
Jeffrey Yasskin
3f565ae2dd
Remove ModuleProviders from clang after r94686 removed them from LLVM.
...
llvm-svn: 94688
2010-01-27 21:12:04 +00:00
Daniel Dunbar
377dc2f91f
ARM/APCS: Fix alignment of long double.
...
llvm-svn: 94685
2010-01-27 20:23:08 +00:00
Ted Kremenek
e9918356b2
Move more naming conventions logic out of the retain/release checker to CocoaConventions.h.
...
llvm-svn: 94682
2010-01-27 18:00:17 +00:00
Ken Dyck
160146eba2
Change the return type of ASTContext::getDeclAlignInBytes() to CharUnits and,
...
now that the "InBytes" part of the name is implied by the return type, rename
it to getDeclAlign().
llvm-svn: 94681
2010-01-27 17:10:57 +00:00
Benjamin Kramer
b925f7707e
Use raw_ostreams in Preprocessor::ExpandBuiltinMacro. Still not nice but less fragile than the old code.
...
llvm-svn: 94679
2010-01-27 16:38:22 +00:00
Ted Kremenek
968999b5f6
Add missing call to Optional<...>.getValue() that was pointed out by Chandler.
...
llvm-svn: 94678
2010-01-27 16:31:37 +00:00
Ken Dyck
2c229a7c17
Use getTypeAlignInChars() for alignment in VisitSizeOfAlignOfExpr().
...
llvm-svn: 94677
2010-01-27 12:54:25 +00:00
David Chisnall
358e751a7b
Unique ObjC strings (GNU Runtime); fix for PR6142. Note: Doing this in the runtime-specific code is a bit ugly. It would be a good idea to hoist all of the string / protocol uniqueing code up into CGObjCRuntime or CodeGenModule and only handle emitting the original versions in the runtime-specific code.
...
llvm-svn: 94676
2010-01-27 12:49:23 +00:00
Chris Lattner
0afd3a23cd
fix a bug in the _MM_TRANSPOSE4_PS definition, patch by Brian Sumner from
...
PR6138
llvm-svn: 94669
2010-01-27 07:54:50 +00:00
Ted Kremenek
d5e27af60a
Remove unnecessary ASTContext* argument from isRefType().
...
llvm-svn: 94665
2010-01-27 06:45:10 +00:00
Ted Kremenek
49c0d89a10
Update CMake build.
...
llvm-svn: 94663
2010-01-27 06:14:12 +00:00
Ted Kremenek
db1832d928
Start pulling out pieces of the monolithic retain/release checker into
...
reusable and modular API pieces.
Start by pulling the logic for deriving the Cocoa naming convention
into a separate API, header, and source file.
llvm-svn: 94662
2010-01-27 06:13:48 +00:00
Douglas Gregor
3edc4d5ec3
Fix a major oversight in the comparison of standard conversion
...
sequences, where we would occasionally determine (incorrectly) that
one standard conversion sequence was a proper subset of another when,
in fact, they contained completely incomparable conversions.
This change records the types in each step within a standard
conversion sequence, so that we can check the specific comparison
types to determine when one sequence is a proper subset of the
other. Fixes this testcase (thanks, Anders!), which was distilled from
PR6095 (also thanks to Anders).
llvm-svn: 94660
2010-01-27 03:51:04 +00:00
John McCall
86121519ca
Implement access-check delays for out-of-line member definitions
...
using the same framework we use for deprecation warnings.
llvm-svn: 94659
2010-01-27 03:50:35 +00:00
Anders Carlsson
e437c6870a
Add support for 3dnow and 3dnowa, and define the target macros accordingly. (This is needed in order to build Qt).
...
llvm-svn: 94658
2010-01-27 03:47:49 +00:00
Anders Carlsson
40446e8a0a
Structs and classes with non-trivial destructors or copy constructors should be passed indirectly in the 32-bit ABI. Fixes PR6094.
...
llvm-svn: 94656
2010-01-27 03:25:19 +00:00
John McCall
58cc69d4c1
Implement access control for overloaded functions. Suppress access control
...
diagnostics in "early" lookups, such as during typename checks and when building
unresolved lookup expressions.
llvm-svn: 94647
2010-01-27 01:50:18 +00:00
Daniel Dunbar
f48d51d693
Driver/Darwin: Eliminate invalid uses of DarwinVersion -- this fixes a number of
...
defaults when targetting iPhoneOS (blocks, non-fragile ABI, stack protector).
llvm-svn: 94642
2010-01-27 00:57:11 +00:00
Daniel Dunbar
6d23b2f503
Driver/Darwin: Simplify target version checks.
...
llvm-svn: 94641
2010-01-27 00:57:03 +00:00
Daniel Dunbar
8360803a8a
Driver/Darwin: Fix a few link arguments when targetting different iPhoneOS
...
versions to match gcc (which is matching linker changes).
llvm-svn: 94640
2010-01-27 00:56:56 +00:00
Daniel Dunbar
b73bb5d085
Driver/Darwin: Switch clang -triple synthesis to use computed target information.
...
llvm-svn: 94639
2010-01-27 00:56:49 +00:00
Daniel Dunbar
7c870175eb
Driver/Darwin: Eliminate confusing IsIPhoneOS parameter -- this was actually
...
just indicating whether the default target should be iPhoneOS.
llvm-svn: 94638
2010-01-27 00:56:44 +00:00
Daniel Dunbar
15c8942baf
Driver/Darwin: Switch to using isTargetIPhoneOS where appropriate.
...
llvm-svn: 94637
2010-01-27 00:56:37 +00:00
Daniel Dunbar
3b8e50d0ed
Driver/Darwin: Track target platform more explicitly in tool chain, eventually
...
this should just be part of the tool chain itself once we have eliminated
argument translation.
llvm-svn: 94635
2010-01-27 00:56:25 +00:00
Ted Kremenek
e36bceb97d
Teach RegionStore to handle initialization of incomplete arrays in structures using a compound value. Fixes <rdar://problem/7515938>.
...
llvm-svn: 94622
2010-01-26 23:51:00 +00:00
Ted Kremenek
6296e0990b
Move 'LocalCheckers.h' to the 'Checkers' subdirectory.
...
llvm-svn: 94609
2010-01-26 22:59:55 +00:00
Ted Kremenek
b29faead69
Move 'include/Checkers/PathSensitive/Checkers' directory to 'include/Checkers'.
...
llvm-svn: 94608
2010-01-26 22:56:15 +00:00
Fariborz Jahanian
d59baba9fd
Patch to add 'volatile' to first argument of all
...
sync compare_and_swap to match them with gcc.
It also fixes a few incorrect argument defitions.
(fixes radar 7540291).
llvm-svn: 94607
2010-01-26 22:48:42 +00:00
Mike Stump
ded0a406b4
Refine the non-virtual this adjustments for thunks by using the offset
...
to the declaring class from the nearest virtual base class. WIP.
llvm-svn: 94606
2010-01-26 22:44:01 +00:00
Sebastian Redl
833ef45b1d
Bring some semblance of order into Decl.h and Decl.cpp. While at it, fix some typo comments and remove an unused and unimplemented function prototype. No functionality change.
...
llvm-svn: 94599
2010-01-26 22:01:41 +00:00
Mike Stump
a04ecfb701
Refine the non-virtual this adjustments for thunks by using the offset
...
to the declaring class from the nearest virtual base class. WIP.
This fixes 40% of all the problems remaining in one of my testcases.
llvm-svn: 94592
2010-01-26 21:35:27 +00:00
Fariborz Jahanian
f0ed69cb5b
Added assert to the rewrite.
...
llvm-svn: 94584
2010-01-26 20:37:44 +00:00
Ken Dyck
7df3cbeb01
Convert one last size variable to CharUnits (follow-on to 94577).
...
llvm-svn: 94579
2010-01-26 19:59:28 +00:00
Ken Dyck
3eb55cfe8a
Use CharUnits for sizes, offsets, alignments, and padding amounts for values
...
that are in character units.
llvm-svn: 94577
2010-01-26 19:44:24 +00:00
Douglas Gregor
64213261b4
Fix typo in comment
...
llvm-svn: 94576
2010-01-26 19:43:43 +00:00
Ken Dyck
5262b11962
Use CharUnits for alignments in character units.
...
llvm-svn: 94571
2010-01-26 19:13:33 +00:00
Ken Dyck
a0f99ff230
Use CharUnits for alignment of UTF16 string in GetAddrOfConstantCFString().
...
llvm-svn: 94564
2010-01-26 18:46:23 +00:00
Ken Dyck
e5402e4749
Use CharUnits for alignment in EmitNullInitializationLValue().
...
llvm-svn: 94563
2010-01-26 18:35:11 +00:00
Fariborz Jahanian
f9e8c2b759
Refix rewriting of an ivar access when it is
...
type-cast to its sub-class (radar 7575882).
llvm-svn: 94559
2010-01-26 18:28:51 +00:00
Anders Carlsson
ca4a5459d8
Use the right definition when emitting a global variable. Fixes PR5564.
...
llvm-svn: 94555
2010-01-26 17:43:42 +00:00
Anders Carlsson
7228117108
Change getUnique to return a GlobalDecl. Fixes PR6147.
...
llvm-svn: 94554
2010-01-26 17:36:47 +00:00
Ken Dyck
a6046ab82b
Correct cut-and-paste error in doxygen comment for newly introduced
...
getTypeAlignInChars().
llvm-svn: 94553
2010-01-26 17:25:18 +00:00
Ken Dyck
24d28d6cde
Add getTypeAlignInChars() for use in code that works in alignments in character
...
units.
llvm-svn: 94552
2010-01-26 17:22:55 +00:00
Ken Dyck
98ca79435a
Introduce CodeGenModule::GetTargetTypeStoreSize() to calculate the store size
...
of LLVM types in character units.
llvm-svn: 94542
2010-01-26 13:48:07 +00:00
John McCall
1f6386b79b
Avoid some unnecessary copying of unresolved lookup results.
...
llvm-svn: 94531
2010-01-26 07:37:41 +00:00
John McCall
8fe6808de0
Handle redeclarations found by ADL deterministically and reasonably.
...
This solution relies on an O(n) scan of redeclarations, which means it might
scale poorly in crazy cases with tons of redeclarations brought in by a ton
of distinct associated namespaces. I believe that avoiding this
is not worth the common-case cost.
llvm-svn: 94530
2010-01-26 07:16:45 +00:00
Chandler Carruth
72343706c1
Correctly treat 64 bit integers specified via the mode attribute as the 'long'
...
type when that type is 64 bits wide, and the 'long long' type when 'long' is
only 32 bits wide. This fixes PR6108.
Also adds a bunch of test cases to ensure proper conversion between equally
sized standard types and mode-specified types on both 32 and 64 bit targets.
llvm-svn: 94527
2010-01-26 06:39:24 +00:00
Anders Carlsson
d6b21e4842
If a global variable has an initializer with side effects, it can never be deferred (even if it's in an anonymous namespace).
...
llvm-svn: 94525
2010-01-26 06:15:16 +00:00
John McCall
91f61fc921
Allow ADL to find functions imported by using decls. Leave wordy comment
...
about interaction between ADL and default arguments. Shrug shoulders, commit.
llvm-svn: 94524
2010-01-26 06:04:06 +00:00
Anders Carlsson
0b5f1ddf0a
Fix another debug info crash with virtual bases.
...
llvm-svn: 94520
2010-01-26 05:26:39 +00:00
Anders Carlsson
17ed0496c5
Fix the test I broke, and also fix a crash when declaring a virtual destructor. Add debug info support for pure virtual member functions.
...
llvm-svn: 94519
2010-01-26 05:19:50 +00:00
Anders Carlsson
b85f0ab976
Factor creating the DISubprogram for a member function out into a separate function.
...
llvm-svn: 94513
2010-01-26 04:49:33 +00:00
Anders Carlsson
c1821155bf
Simplify CGDebugInfo::CollectCXXMemberFunctions a little. More to come.
...
llvm-svn: 94511
2010-01-26 04:40:11 +00:00
Anders Carlsson
20bbbd489b
Make sure to always mark a global variable as not being constant if it has a C++ initializer.
...
llvm-svn: 94504
2010-01-26 04:02:23 +00:00
Daniel Dunbar
19afd61201
Simplify.
...
llvm-svn: 94503
2010-01-26 03:56:40 +00:00
Mike Stump
77537b136e
Be sure to track the non-virtual part of the vcall offset in complex
...
multiple inheritance cases. WIP.
This fixes 20% of the outstanding problems found by the randomized
tester.
llvm-svn: 94499
2010-01-26 03:42:22 +00:00
John McCall
4c4c1dfc2b
Preserve access bits through overload resolution much better. Some
...
general refactoring in operator resolution.
llvm-svn: 94498
2010-01-26 03:27:55 +00:00
Daniel Dunbar
d54669d30b
Driver/Darwin: Honor IPHONEOS_DEPLOYMENT_TARGET.
...
llvm-svn: 94488
2010-01-26 01:45:19 +00:00
Daniel Dunbar
d86666ffd7
Driver/Darwin: Stuff iPhoneOS into environment portion of the (llvm/clang) triple instead of keying off architecture. Also, fix version define to properly include the revision/micro component of the version number.
...
llvm-svn: 94487
2010-01-26 01:44:04 +00:00
John McCall
b89836b6db
Pass access specifiers around in overload resolution.
...
llvm-svn: 94485
2010-01-26 01:37:31 +00:00
Fariborz Jahanian
7b99f27392
Fix a regression caused by my rewriting of cast of ivar
...
access (was radar 7575882).
llvm-svn: 94481
2010-01-26 00:29:22 +00:00
Mike Stump
90181eb294
Fixup a missing vcall entry. WIP.
...
llvm-svn: 94478
2010-01-26 00:05:04 +00:00
Devang Patel
c54353d935
First cut at emitting inheritance info.
...
llvm-svn: 94473
2010-01-25 23:32:18 +00:00
Devang Patel
7af03fb4f0
Emit debug info for virtual functions.
...
llvm-svn: 94467
2010-01-25 23:17:15 +00:00
John McCall
5cb5287467
Fixit to remove 'volatile' in file-scope 'asm volatile'.
...
llvm-svn: 94466
2010-01-25 23:12:50 +00:00
Daniel Dunbar
4e29505a95
Driver: Fix fallback to gcc to -c instead of -S if trying to generate an LLVM bc
...
file.
llvm-svn: 94463
2010-01-25 22:35:08 +00:00
John McCall
9dfb16210e
Warn on top-level 'asm volatile' (instead of misparsing it).
...
"Fixes" rdar://problem/7574870
llvm-svn: 94458
2010-01-25 22:27:48 +00:00
Fariborz Jahanian
5cda92820f
global variable that binds reference to a non-lvalue reproted
...
as NYI now.
llvm-svn: 94453
2010-01-25 21:40:39 +00:00
Fariborz Jahanian
d360ce9d57
Fixes a rewriting bug of access ivar of a variable cast
...
to subclass. (Fixes radar 7575882).
llvm-svn: 94444
2010-01-25 20:50:02 +00:00
Fariborz Jahanian
210031b79c
Fix a code gen. bug involving compiling global references.
...
(fixes radar 7574896).
llvm-svn: 94434
2010-01-25 18:30:26 +00:00
Ted Kremenek
fe0fc40c3b
Move BugReporter.h, PathDiagnostic.h, and BugType.h to 'include/Checker/BugReporter'
...
llvm-svn: 94428
2010-01-25 17:10:22 +00:00
Eli Friedman
673f94a0c9
Code simplification; this should have no visible effects.
...
llvm-svn: 94427
2010-01-25 17:04:54 +00:00
Douglas Gregor
7210063126
Move the type specifier location for elaborated-type-specifiers from
...
the tag kind (union, struct, class, enum) over to the name of the tag,
if there is a name, since most clients want to point at the name.
llvm-svn: 94424
2010-01-25 16:33:23 +00:00
Benjamin Kramer
ea9f3f240c
Update C++ include paths for Exherbo, by Ingmar Vanhassel.
...
llvm-svn: 94420
2010-01-25 12:20:15 +00:00
Ted Kremenek
0a4546b6fc
Add missing file.
...
llvm-svn: 94407
2010-01-25 04:48:38 +00:00
Ted Kremenek
d6b8708643
Split libAnalysis into two libraries: libAnalysis and libChecker.
...
(1) libAnalysis is a generic analysis library that can be used by
Sema. It defines the CFG, basic dataflow analysis primitives, and
inexpensive flow-sensitive analyses (e.g. LiveVariables).
(2) libChecker contains the guts of the static analyzer, incuding the
path-sensitive analysis engine and domain-specific checks.
Now any clients that want to use the frontend to build their own tools
don't need to link in the entire static analyzer.
This change exposes various obvious cleanups that can be made to the
layout of files and headers in libChecker. More changes pending. :)
This change also exposed a layering violation between AnalysisContext
and MemRegion. BlockInvocationContext shouldn't explicitly know about
BlockDataRegions. For now I've removed the BlockDataRegion* from
BlockInvocationContext (removing context-sensitivity; although this
wasn't used yet). We need to have a better way to extend
BlockInvocationContext (and any LocationContext) to add
context-sensitivty.
llvm-svn: 94406
2010-01-25 04:41:41 +00:00
Chris Lattner
83b0dd16c3
fix rdar://7556129 a crash in blocks debug info codegen.
...
llvm-svn: 94402
2010-01-25 03:34:56 +00:00
Chris Lattner
bf78478d35
simplify code.
...
llvm-svn: 94401
2010-01-25 03:29:35 +00:00
Daniel Dunbar
fcf2d428e4
ASTUnit: Don't check that input files exist when parsing ASTs from the command
...
line -- they may be remapped (fake) files. This is useful for testing parsing
entirely from memory.
llvm-svn: 94395
2010-01-25 00:44:02 +00:00
Chris Lattner
0bcc858a2b
-fno-rtti is now the default.
...
llvm-svn: 94379
2010-01-24 20:43:31 +00:00
Anders Carlsson
77babdb99a
Implement [dcl.fct.spec]p6.
...
llvm-svn: 94365
2010-01-24 16:49:46 +00:00
Anders Carlsson
aaeef07280
Implement instantiation of AsmStmts (Crazy, I know)
...
llvm-svn: 94361
2010-01-24 05:50:09 +00:00
Alexis Hunt
aecc45cb3c
Mangle static variables with an extra name to distinguish them from non-static variables in the same TU.
...
Fixes PR5966 for real this time; also reverts r92911, which had a incorrect fix.
llvm-svn: 94352
2010-01-24 03:04:27 +00:00
Chris Lattner
8fd2d01118
fix PR6034, a crash on invalid where the switch stack would get
...
unbalanced.
llvm-svn: 94347
2010-01-24 01:50:29 +00:00
Anders Carlsson
60ddba67a8
Fix a nasty bug where temporaries weren't marked as being conditional in some cases.
...
llvm-svn: 94341
2010-01-24 00:20:05 +00:00
Anders Carlsson
0bd52403d4
Use new initialization code when dealing with [dcl.init.aggr]p12. This fixes the bug where array elements and member initializers weren't copied correctly.
...
llvm-svn: 94340
2010-01-24 00:19:41 +00:00
Anders Carlsson
6cabf318c9
Change all InitializedEntity pointers over to be references.
...
llvm-svn: 94335
2010-01-23 23:23:01 +00:00
Anders Carlsson
3fa93b7e54
Start passing InitializedEntity to CheckDesignatedInitializer.
...
llvm-svn: 94334
2010-01-23 22:49:02 +00:00
John McCall
f9b528c7cf
Preserve access for enum constants during template instantiation.
...
llvm-svn: 94333
2010-01-23 22:37:59 +00:00
Anders Carlsson
dbb25a38b9
More init work, adding more entity parameters.
...
llvm-svn: 94332
2010-01-23 20:47:59 +00:00
Anders Carlsson
73eb7cd351
Use the new init code for member subobjects.
...
llvm-svn: 94329
2010-01-23 20:20:40 +00:00
Anders Carlsson
0cf999b663
Switch some array initialization over to the new init code.
...
llvm-svn: 94327
2010-01-23 20:13:41 +00:00
Anders Carlsson
d0849254de
Baby steps towards migrating the InitListChecker over to the new initialization code. Pass an InitializedEntity pointer through to most init checker functions. Right now, it's ignored everywhere except when initializing vectors in C++.
...
llvm-svn: 94325
2010-01-23 19:55:29 +00:00
Anders Carlsson
3cc795ae8d
When an InitializedEntity is passed to CheckSingleInitializer, call the new Sema::PerformCopyInitialization overload.
...
llvm-svn: 94324
2010-01-23 19:22:30 +00:00
Eli Friedman
d6ef69a7db
Add bzero builtin; this should help codegen quality for code using this
...
function.
llvm-svn: 94320
2010-01-23 19:00:10 +00:00
Anders Carlsson
26d0564fd1
Change CheckSingleInitializer to take/return OwningExprResults instead. No functionality change.
...
llvm-svn: 94316
2010-01-23 18:35:41 +00:00
Benjamin Kramer
12a6ce7cad
Simplify code with StringRef.
...
llvm-svn: 94314
2010-01-23 18:16:35 +00:00
Benjamin Kramer
8f8f405c71
No need to terminate this buffer.
...
llvm-svn: 94313
2010-01-23 18:16:07 +00:00
John McCall
6d174646dd
Produce a special diagnostic when users call a function with an argument of
...
incomplete type (or a pointer/reference to such).
The causes of this problem are different enough to justify a different "design"
for the diagnostic. Most notably, it doesn't give an operand index:
it's usually pretty obvious which operand is the problem, it adds a lot of
clutter to mention it, and the fix is usually in a different part of the file
anyway.
This is yet another diagnostic that should really have an analogue in the
non-overloaded case --- which should be much easier to write because of
the weaker space constraints.
llvm-svn: 94303
2010-01-23 08:10:49 +00:00
Anders Carlsson
8e01dcf6f6
Fix the EntityKind order so that all entity kinds that can be copied (using copy constructors) come first. Also, fix a bug where EK_New was left out of the err_init_conversion_failed diagnostic (It is now reported as 'new value'). Please review Doug :)
...
llvm-svn: 94289
2010-01-23 05:47:27 +00:00
John McCall
fe796ddd5a
During overload resolution diagnostics, sort non-viable candidates by the quality of their
...
conversions. To make this work, fill out all conversions for all candidates
(but only when diagnosing overload failure). Split out a few cases from
ovl_fail_bad_conversion which didn't actually involve a failed argument
conversion.
I'm pretty sure this is not a well-founded ordering, but I'm not sure it matters.
llvm-svn: 94283
2010-01-23 05:17:32 +00:00
Anders Carlsson
ed8d80d72b
Separate EK_ArrayOrVectorElement into EK_ArrayElement and EK_VectorElement; arrays and vectors are pretty different beasts in C++. Doug, please review/comment.
...
llvm-svn: 94279
2010-01-23 04:34:47 +00:00
David Chisnall
481e3a87fe
Created __builtin___NSStringMakeConstantString() builtin, which generates constant Objective-C strings.
...
llvm-svn: 94274
2010-01-23 02:40:42 +00:00
Ted Kremenek
4c0df3dc1d
Rename getClangFullVendorVersion() to getClangFullVersion().
...
llvm-svn: 94273
2010-01-23 02:11:34 +00:00
John McCall
553c0796ee
Implement elementary access control.
...
llvm-svn: 94268
2010-01-23 00:46:32 +00:00
Douglas Gregor
aa98ed9a07
Extend clang_createTranslationUnitFromSourceFile() to support creating
...
translation units that include unsaved files.
llvm-svn: 94258
2010-01-23 00:14:00 +00:00
Fariborz Jahanian
935f041243
outside a method, 'super' should resolve in a normal name look up
...
to mimic gcc's behavior. Fixes radar 7400691.
llvm-svn: 94246
2010-01-22 23:04:44 +00:00
Ted Kremenek
c0f3f72fa4
Add 'clang_getClangVersion()' function to CIndex. This exposes the full Clang version string through the CIndex API.
...
llvm-svn: 94242
2010-01-22 22:44:15 +00:00
Ted Kremenek
51b8bc93f8
Move version string generation (e.g., "clang 1.1 ...") to libBasic/Version.cpp, getClangFullVendorVersion().
...
llvm-svn: 94235
2010-01-22 22:29:50 +00:00
Ted Kremenek
18e066f6a9
(1) Rename getClangSubversionRevision() to getClangRevision(), and
...
have it return a StringRef instead of an integer (to be more VCS
agnostic).
(2) Add getClangFullRepositoryVersion(), which contains an
amalgamation of the repository name and the revision.
(3) Change PCH to only emit the string returned by
getClangFullRepositoryVersion() instead of also emitting the value
of getClangSubversionRevision() (which has been removed). This is
functionally equivalent.
More cleanup to version string generation pending...
llvm-svn: 94231
2010-01-22 22:12:47 +00:00
Fariborz Jahanian
8c6c0b6a1f
ui64, etc. are valid VS suffixes.
...
Fixes radar 7562363.
llvm-svn: 94224
2010-01-22 21:36:53 +00:00
Ted Kremenek
17437130e9
Rename pch::SVN_BRANCH_REVISION to pch::VERSION_CONTROL_BRANCH_REVISION.
...
llvm-svn: 94214
2010-01-22 20:59:36 +00:00
Ted Kremenek
2377a0e0ea
Rename getClangSubversionPath() -> getClangRepositoryPath() and have it return a StringRef.
...
llvm-svn: 94213
2010-01-22 20:55:35 +00:00
Mike Stump
0a2754ed8a
Be sure to select primary bases among the nearly empties in preorder,
...
not just among the direct bases. Before we where missing nearly
empties that were bases of virtual base classes.
llvm-svn: 94208
2010-01-22 20:27:17 +00:00
Douglas Gregor
562c1f9365
Teach CIndex's cursor visitor to restrict its traversal to a specific
...
region of interest (if provided). Implement clang_getCursor() in terms
of this traversal rather than using the Index library; the unified
cursor visitor is more complete, and will be The Way Forward.
Minor other tweaks needed to make this work:
- Extend Preprocessor::getLocForEndOfToken() to accept an offset
from the end, making it easy to move to the last character in the
token (rather than just past the end of the token).
- In Lexer::MeasureTokenLength(), the length of whitespace is zero.
llvm-svn: 94200
2010-01-22 19:49:59 +00:00
Mike Stump
1f49d65235
Finish off fixing up debug information.
...
llvm-svn: 94193
2010-01-22 18:48:47 +00:00
Fariborz Jahanian
53967e2abd
Patch fixes a lookup bug in c++'s anonymous union member
...
lookup. Fixes radar 7562438.
llvm-svn: 94191
2010-01-22 18:30:17 +00:00
Anders Carlsson
7caa4cb87a
No need to canonicalize the type and use dyn_cast. Also, correctly diagnose trying to override a function returning an lvalue reference with a function overriding an rvalue reference.
...
llvm-svn: 94183
2010-01-22 17:37:20 +00:00
Douglas Gregor
0599df16a6
Eliminate some Clang warnings
...
llvm-svn: 94177
2010-01-22 15:41:14 +00:00
Benjamin Kramer
d6b28fc6ad
Simplify code.
...
llvm-svn: 94175
2010-01-22 13:59:13 +00:00
Chandler Carruth
df7fd5f8d5
Fix an obvious goof that caused us to only see the top level of return types
...
when checking for covariance. Added some fun test cases, fixes PR6110.
This felt obvious enough to just commit. ;] Let me know if anything needs
tweaking.
llvm-svn: 94173
2010-01-22 13:07:41 +00:00
Mike Stump
9eb76d47f2
Ensure we output all non-virtual base vtables. Fixes PR5890.
...
llvm-svn: 94163
2010-01-22 06:45:05 +00:00
Zhongxing Xu
a1293a67cd
Process cast according to the cast kind. Prepare for more specific cast
...
handling (for C++). No functionality change for now.
llvm-svn: 94153
2010-01-22 04:30:00 +00:00
Daniel Dunbar
7cde09ac8a
Driver/Darwin: Update tool chain to use static clang_rt libraries provided by
...
compiler-rt. This tool chain now works on x86 and ARM, but isn't the x86 default
yet.
This drastically cleans up the linker invocation, old invocation:
--
"/Developer/usr/bin/../libexec/gcc/i686-apple-darwin10/4.2.1/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.6.0" "-weak_reference_mismatches" "non-weak" "-o" "a.out" "-lcrt1.10.6.o" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64" "-L/usr/lib/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.." "t.o" "-lSystem" "-lgcc"
--
New invocation:
--
# For 10.6:
"/usr/bin/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.6.0" "-o" "a.out" "-lcrt1.10.6.o" "t.o" "-lSystem"
# For 10.4:
"/usr/bin/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.4" "-o" "a.out" "-lcrt1.o" "t.o" "-lSystem" "-lgcc_s.10.4" "/Volumes/Data/ddunbar/llvm.obj.64/Debug/lib/clang/1.1/lib/darwin/libclang_rt.10.4.a"
--
llvm-svn: 94150
2010-01-22 03:38:14 +00:00
Daniel Dunbar
93d7acfcf2
Driver/Darwin/ld: Fix refacto, -force_cpusubtype_ALL should only be forwarded,
...
not always added.
llvm-svn: 94149
2010-01-22 03:37:33 +00:00
Mike Stump
d2808449e4
Update debugging code.
...
llvm-svn: 94145
2010-01-22 02:51:26 +00:00
Daniel Dunbar
dcc3b657f2
Driver/Darwin/ld: Factor out getDarwinArchName, for getting the "Darwin" arch
...
name being used in an driver invocation.
llvm-svn: 94139
2010-01-22 02:04:58 +00:00
Daniel Dunbar
a48823fdbe
Driver/Darwin/ld: Eliminate AddDarwinSubArch, our linker invocation is going to
...
diverge from gcc anyway.
llvm-svn: 94138
2010-01-22 02:04:52 +00:00
Daniel Dunbar
42e3df065e
Use raw_ostream instead of cstdio.
...
llvm-svn: 94136
2010-01-22 02:04:41 +00:00
John McCall
f7b2fb51d1
Create function, block, and template parameters in the context of the
...
translation unit. This is temporary for function and block parameters;
template parameters can just stay this way, since Templates aren't
DeclContexts. This gives us the nice property that everything created
in a record DC should have access in C++.
llvm-svn: 94122
2010-01-22 00:28:27 +00:00
Chris Lattner
fde85356c6
revert my patch for rdar://7520940 that warns when a published header
...
is #included with "foo.h" style syntax instead of framework syntax.
It produced too much noise.
llvm-svn: 94120
2010-01-22 00:14:44 +00:00
Mike Stump
6cbe36fe5a
Wire up the new range reporting for unreachable code.
...
llvm-svn: 94118
2010-01-21 23:49:01 +00:00
Mike Stump
60dbeebee8
Improve unreachable code warnings with respect to dead member and
...
dead array references.
llvm-svn: 94115
2010-01-21 23:15:53 +00:00
Mike Stump
fcd6f94ba7
Improve unreachable code warnings for with respect to dead functional casts in C++.
...
llvm-svn: 94106
2010-01-21 22:12:18 +00:00
Mike Stump
d12e495f17
Improve unreachable code warnings for with respect to c-style casts.
...
llvm-svn: 94094
2010-01-21 19:51:34 +00:00
Mike Stump
c18c403670
Improve unreachable code warnings for with respect to ? :.
...
llvm-svn: 94093
2010-01-21 19:44:04 +00:00
Ted Kremenek
819e873791
Allocate the 'Protocols' array in ObjCInterfaceType and
...
ObjCObjectPointerType using the allocator associated with ASTContext.
Not only does this fix a memory leak, but it also makes these arrays
BumpPtrAllocated (in the typical case).
llvm-svn: 94090
2010-01-21 19:22:34 +00:00
Fariborz Jahanian
da8ec2bc9e
Patch to implement rewriting of properties.
...
Fixes radar 7562952.
llvm-svn: 94087
2010-01-21 17:36:00 +00:00
Mike Stump
14781509fd
Improve unreachable code warnings for with respect to compound
...
assignments.
llvm-svn: 94086
2010-01-21 17:31:41 +00:00
Mike Stump
cc3a853df7
Improve unreachable code warnings with respect to dead binary and
...
unary operators.
llvm-svn: 94084
2010-01-21 17:21:23 +00:00
Daniel Dunbar
ae928714df
Update to use llvm/utils/GetSourceVersion to detect version number, instead of
...
assuming SVN. This should be fixed to not necessarily be an integer.
llvm-svn: 94081
2010-01-21 16:56:47 +00:00
Anders Carlsson
f768db7775
Move the VTT related code into its own file, CGVTT.cpp
...
llvm-svn: 94079
2010-01-21 16:50:45 +00:00
Douglas Gregor
ff59f676d0
Teach code-completion to deal with calls to functions without prototypes.
...
llvm-svn: 94076
2010-01-21 15:46:19 +00:00
Mike Stump
04c6851cd6
Speed up compilation by avoiding generating exceptional edges from
...
CallExprs as those edges help cause a n^2 explosion in the number of
destructor calls. Other consumers, such as static analysis, that
would like to have more a more complete CFG can select the inclusion
of those edges as CFG build time.
This also fixes up the two compilation users of CFGs to be tolerant of
having or not having those edges. All catch code is assumed be to
live if we didn't generate the exceptional edges for CallExprs.
llvm-svn: 94074
2010-01-21 15:20:48 +00:00
Mike Stump
0c2ec779cf
Move some recent checking code into SemaChecking instead.
...
llvm-svn: 94067
2010-01-21 03:59:47 +00:00
Mike Stump
87f2f9b465
Avoid instantiating std::sort to save on compiler size.
...
llvm-svn: 94065
2010-01-21 03:43:13 +00:00
Mike Stump
7df27e7038
When checking for unreachable code, we can trivially avoid checking
...
for unreachable loops if all the blocks are already marked live by
this point.
llvm-svn: 94064
2010-01-21 03:07:51 +00:00
Mike Stump
02230ab7a6
When checking for unreachable blocks, we can trivially avoid extra
...
work, if we know we already marked all blocks as live.
llvm-svn: 94063
2010-01-21 02:55:37 +00:00
Mike Stump
6bf1c08e99
Add infrastructure to add base initializers and member initializers to
...
the CFG. WIP.
llvm-svn: 94062
2010-01-21 02:21:40 +00:00
Fariborz Jahanian
879cc735fc
Fixes comments.
...
llvm-svn: 94053
2010-01-21 00:08:17 +00:00
Fariborz Jahanian
e4951fdc4b
Also allow cast of block pointer type to
...
pointer to an any object. Another variation of
radar 7562285.
llvm-svn: 94052
2010-01-21 00:05:09 +00:00
Devang Patel
3f4a77e082
A Decl->getName() is not unique. However, the debug info descriptors
...
are uniqued. The debug info descriptor describing record's context is
necessary to keep two Decl's descriptor unique if their name match.
There is more work to do to create descriptors for DeclContext.
As a temp. step use type's name in FwdDecl.
llvm-svn: 94050
2010-01-20 23:56:40 +00:00
Fariborz Jahanian
4efdec0677
In objective-c++ land, a block pointer is another object pointer.
...
So, casting a generic object pointer ('id' or 'Class') to the
block pointer is allowed. Fixes radar 7562285.
llvm-svn: 94045
2010-01-20 22:54:38 +00:00
John McCall
401982f56c
First pass at collecting access-specifier information along inheritance paths.
...
Triggers lots of assertions about missing access information; fix them.
Will actually consume this information soon.
llvm-svn: 94038
2010-01-20 21:53:11 +00:00
Fariborz Jahanian
4f8a57112f
Settled rule on warning on unimplemented property in
...
category implementation when some implementations
are missing in the primary class implementation.
(fixes radar 6505200).
llvm-svn: 94014
2010-01-20 19:36:21 +00:00
Chris Lattner
6a89c50e23
reduce redundant are's
...
llvm-svn: 94009
2010-01-20 17:53:58 +00:00
Fariborz Jahanian
b36606aa71
Improve performance of warning when not implementing a required
...
property of a protocol (my previous patch). No change in functionality.
(radar 7544809).
llvm-svn: 94005
2010-01-20 17:27:59 +00:00
Benjamin Kramer
9c22cc800f
Make some helper functions static.
...
llvm-svn: 94004
2010-01-20 16:21:40 +00:00
Benjamin Kramer
c1a62aa67d
Don't store a Twine temporary, it's unsafe.
...
llvm-svn: 94003
2010-01-20 16:18:11 +00:00
Zhongxing Xu
eb76a85af0
Correct comments.
...
llvm-svn: 93999
2010-01-20 07:57:45 +00:00
Chandler Carruth
26b29a0892
Move the MacroBuilder utilitiy to its own header. Update references.
...
Comments and/or improvements to the documentation are welcome.
llvm-svn: 93982
2010-01-20 06:13:02 +00:00
Daniel Dunbar
415763612a
Fix an invalid Twine use spotty by abbeyj, it isn't safe to use Twine
...
temporaries (this is one reason I'm nervous about propagating their use beyond
particularly performance critical places).
llvm-svn: 93981
2010-01-20 06:09:53 +00:00
Chandler Carruth
5b6d9265ba
Actually remove the include that r93974 made unnecessary.
...
llvm-svn: 93975
2010-01-20 04:09:11 +00:00
Zhongxing Xu
00c6046a81
Add a missing case for DeclContext printer.
...
llvm-svn: 93973
2010-01-20 03:21:28 +00:00
Daniel Dunbar
3f3e2cd820
Driver: Lift clang resource directory computation to the Driver object.
...
llvm-svn: 93971
2010-01-20 02:35:16 +00:00
Daniel Dunbar
e2b661c26c
clang/Darwin: Update for rename of 10.4 static runtime library.
...
llvm-svn: 93970
2010-01-20 02:35:02 +00:00
Mike Stump
06c1d87d14
Also handle CXXConstructor, CXXDestructor and CXXConversion in CFG
...
printing.
llvm-svn: 93968
2010-01-20 02:28:05 +00:00
Mike Stump
281d6d7745
Use the llvm coding convention for indentation for switch.
...
llvm-svn: 93966
2010-01-20 02:03:14 +00:00
Fariborz Jahanian
98609b3a07
Patch to implement required warnings for unimplemented
...
properties imported frfom protocol. Fixes radar 7544809.
llvm-svn: 93965
2010-01-20 01:51:55 +00:00
Mike Stump
845384a938
Wire up the EH context for the catch clauses to the outer EH context. WIP.
...
llvm-svn: 93963
2010-01-20 01:30:58 +00:00
Mike Stump
0bdba6cdd8
Add an exceptional edge from the try terminated block to the outer EH
...
context (try or the Exit block) when there isn't a catch (...).
Improve CFG printing for catch (...).
llvm-svn: 93962
2010-01-20 01:15:34 +00:00
John McCall
ad371258aa
Give UnresolvedSet the ability to store access specifiers for each declaration.
...
Change LookupResult to use UnresolvedSet. Also extract UnresolvedSet into its
own header and make it templated over an inline capacity.
llvm-svn: 93959
2010-01-20 00:46:10 +00:00
Mike Stump
06b602e540
Improve CheckFallThrough analysis in the presense of the new C++ EH
...
support. WIP.
llvm-svn: 93956
2010-01-20 00:34:04 +00:00
Chris Lattner
e87668db26
add support for Fedora 10 x86_64, there really should be a better way to handle this.
...
patch by Dmitry
llvm-svn: 93948
2010-01-19 23:30:00 +00:00