- Dec 13, 2008
-
-
rdar://problem/6442306Ted Kremenek authored
GRExprEngine (VisitCast): - When using StoreManager::CastRegion, always use the state and value it returns to generate the next node. Failure to do so means that region values returned that don't require the state to be modified will get ignored. MemRegion: - Tighten the interface for ElementRegion. Now ElementRegion can only be created with a super region that is a 'TypedRegion' instead of any MemRegion. Code in BasicStoreManager/RegionStoreManager already assumed this, but it would result in a dynamic assertion check (and crash) rather than just having the compiler forbid the construction of such regions. - Added ElementRegion::getArrayRegion() to return the 'typed version' of an ElementRegion's super region. - Removed bogus assertion in ElementRegion::getType() that assumed that the super region was an AnonTypedRegion. All that matters is that it is a TypedRegion, which is now true all the time by design. BasicStore: - Modified getLValueElement() to check if the 'array' region is a TypedRegion before creating an ElementRegion. This conforms to the updated interface for ElementRegion. RegionStore: - In ArrayToPointer() gracefully handle things we don't reason about, and only create an ElementRegion if the array region is indeed a TypedRegion. llvm-svn: 60990
-
Chris Lattner authored
llvm-svn: 60989
-
Sebastian Redl authored
llvm-svn: 60983
-
Sebastian Redl authored
llvm-svn: 60982
-
- Dec 12, 2008
-
-
Ted Kremenek authored
PTH: Added minor 'sibling jumping' optimization for iterating over the side table used for fast preprocessor block skipping. This has a minor performance improvement when preprocessing Cocoa.h, but can have some wins in pathologic cases. llvm-svn: 60966
-
-
Ted Kremenek authored
Added PTH optimization to not process entire blocks of tokens that appear in skipped preprocessor blocks. This improves PTH speed by 6%. The code for this optimization itself is not very optimized, and will get cleaned up. llvm-svn: 60956
-
Chris Lattner authored
processing: it allows arbitrary foldable constants as the operand of ?: when builtin_constant_p is the condition. llvm-svn: 60954
-
Douglas Gregor authored
llvm-svn: 60947
-
Anders Carlsson authored
llvm-svn: 60943
-
-
Anders Carlsson authored
llvm-svn: 60939
-
Chris Lattner authored
llvm-svn: 60937
-
Chris Lattner authored
llvm-svn: 60935
-
-
Chris Lattner authored
llvm-svn: 60933
-
Chris Lattner authored
llvm-svn: 60932
-
Chris Lattner authored
Substantially improve error recovery after broken if conditions by parsing the full if when we have a semantic error instead of using parser recovery techniques to recover from a semantic error. This fixes rdar://6094870 - spurious error after invalid 'if' condition llvm-svn: 60929
-
Chris Lattner authored
llvm-svn: 60928
-
Anders Carlsson authored
Work in preparation for VLAs. Make sure to restore the stack if necessary (Saving the stack isn't implemented right now :) llvm-svn: 60925
-
-
Chris Lattner authored
output that GCC does. rdar://6440297 llvm-svn: 60922
-
rdar://6097892Chris Lattner authored
fix rdar://6097892 - gcc incompat: clang rejects __func__, __FUNCTION__, and __PRETTY_FUNCTION__ outside func Yeah, this is "useful". llvm-svn: 60921
-
-
Douglas Gregor authored
the type of the enumeration once the enumeration has been defined. Fix the overloading test-case to properly create enums that promote the way we want them to. Implement C++0x promotions from enumeration types to long long/unsigned long long. We're using these promotions in Carbon.h (since long long is a common extension). Fixes PR clang/2954: http://llvm.org/bugs/show_bug.cgi?id=2954 llvm-svn: 60917
-
Ted Kremenek authored
- Added a side-table per each token-cached file with the preprocessor conditional stack. This tracks what #if's are matched with what #endifs and where their respective tokens are in the PTH file. This will allow for quick skipping of excluded conditional branches in the Preprocessor. - Performance testing shows the addition of this information (without actually utilizing it) leads to no performance regressions. llvm-svn: 60911
-
- Dec 11, 2008
-
-
Sebastian Redl authored
llvm-svn: 60906
-
Ted Kremenek authored
PTHLexer: Keep track of the location of the last '#' token and provide the means to jump ahead in the token stream. llvm-svn: 60905
-
Sebastian Redl authored
llvm-svn: 60904
-
Sebastian Redl authored
llvm-svn: 60900
-
Douglas Gregor authored
llvm-svn: 60897
-
Ted Kremenek authored
llvm-svn: 60896
-
Sebastian Redl authored
llvm-svn: 60895
-
Sebastian Redl authored
llvm-svn: 60892
-
Sebastian Redl authored
llvm-svn: 60888
-
Douglas Gregor authored
Actually distinguish between RecordDecl::field_iterator and RecordDecl::field_const_iterator, propagating the constness down to the FieldDecls. llvm-svn: 60883
-
Douglas Gregor authored
and separates lexical name lookup from qualified name lookup. In particular: * Make DeclContext the central data structure for storing and looking up declarations within existing declarations, e.g., members of structs/unions/classes, enumerators in C++0x enums, members of C++ namespaces, and (later) members of Objective-C interfaces/implementations. DeclContext uses a lazily-constructed data structure optimized for fast lookup (array for small contexts, hash table for larger contexts). * Implement C++ qualified name lookup in terms of lookup into DeclContext. * Implement C++ unqualified name lookup in terms of qualified+unqualified name lookup (since unqualified lookup is not purely lexical in C++!) * Limit the use of the chains of declarations stored in IdentifierInfo to those names declared lexically. * Eliminate CXXFieldDecl, collapsing its behavior into FieldDecl. (FieldDecl is now a ScopedDecl). * Make RecordDecl into a DeclContext and eliminates its Members/NumMembers fields (since one can just iterate through the DeclContext to get the fields). llvm-svn: 60878
-
Zhongxing Xu authored
llvm-svn: 60870
-
Zhongxing Xu authored
to them. llvm-svn: 60868
-
Anders Carlsson authored
Make sure to promote expressions of the form (floating point + complex integer) correctly, to (complex floating point + complex floating point) llvm-svn: 60862
-