Commit Graph

26765 Commits

Author SHA1 Message Date
Zhongxing Xu 5d30c69813 Add skeleton for handling other kinds of CFGElements.
llvm-svn: 119135
2010-11-15 08:48:43 +00:00
Chandler Carruth eb84200747 Clean up some names and fix the handling of default sysroots on Windows and
other platforms where the textual default of '/' isn't the system's root
directory. We should probably still make the textual default platform specific,
but this should avoid the particularly bad problem with the previous state: we
applied a sysroot of '/' to '/usr/local/google' which added
'//usr/local/include' to the windows header search path, a share on another
machine named 'usr'. Oops.

llvm-svn: 119131
2010-11-15 07:15:26 +00:00
Chandler Carruth 03ac1b09d1 Switch the sysroot logic to use the Path interface, resolving a FIXME and
making the code less gross.

llvm-svn: 119099
2010-11-15 00:48:13 +00:00
Chandler Carruth c4d6fd5b03 Make sysroot only apply to baked in paths which start with a '/'.
llvm-svn: 119095
2010-11-15 00:05:18 +00:00
Ted Kremenek 0526f52a49 Revert r119045. It was failing on Windows.
llvm-svn: 119048
2010-11-14 17:53:34 +00:00
Ted Kremenek ca817a3c0c "Fix" some unintentional fallout from converting
the Stmt* visitation in CursorVisitor to be
data-recursive.

Since AnnotationTokensWorker explicitly calls
CursorVisitor::VisitChildren(), it essentially
transforms the data-recursive algorithm in
CursorVisitor back into a non-data recursive one.
This is particularly bad because the data-recursive
algorithm uses more stack space per stack frame,
which can cause us to blow the stack in some cases.

"Fix" this by making the stack that AnnotationTokensWorker
runs in really huge.  The real fix is to modify
AnnotationTokensWorker not to do the explicit
recursive call.

llvm-svn: 119047
2010-11-14 17:47:35 +00:00
Ted Kremenek 96b329c428 Clean up initialization of LangOptions object by splitting part of it into a parent class
'LangOptionsBase' that default initializes all flags to 0.  Now the ctor of LangOptions
only initializes the flags that might be non-zero (significantly simplifying things).

This also appeases Valgrind on Mac OS X, which no longer reports that one of the flags
may be uninitialized.

llvm-svn: 119045
2010-11-14 17:04:23 +00:00
Zhongxing Xu fee455fcf5 Revert r118991.
Elidable CXXConstructExpr should inhibit calling destructor for temporary 
that is copied, not the one created. This is because eliding copy constructor 
means that the object that was to be copied will be constructed directly in 
memory the copy would be constructed in.

llvm-svn: 119044
2010-11-14 15:23:50 +00:00
John McCall 83fe49d1e1 Always emit full loads from volatile complex l-values.
Return the result of a complex assignment with the original values,
not by performing a load from the l-value;  this is the correct
semantics in C, although not in C++.

llvm-svn: 119037
2010-11-14 09:40:28 +00:00
John McCall d764625448 Add a few more complex-related cast kinds that arise due to arbitrary
implicit conversions;  the last batch was specific to promotions.
I think this is the full set we need.  I do think dividing the cast
kinds into floating and integral is probably a good idea.

Annotate a *lot* more C casts with useful cast kinds.

llvm-svn: 119036
2010-11-14 08:17:51 +00:00
Chris Lattner 2536851543 typo2
llvm-svn: 119035
2010-11-14 07:30:46 +00:00
Chris Lattner 11a8d05bea fix typo
llvm-svn: 119034
2010-11-14 07:09:32 +00:00
Ted Kremenek d57f43eb3a CursorVisitor: make data-recursion algorithm the default except for the few remaining Exprs still
covered by the normal recursive visitation.

llvm-svn: 119030
2010-11-14 05:45:47 +00:00
Ted Kremenek d34c65d8a2 Remove stale #include.
llvm-svn: 119028
2010-11-14 05:28:43 +00:00
Fariborz Jahanian 574940e16f Removed unnecessary initialization of a flag which
somehow got several block tests fail with a linux built
compiler.

llvm-svn: 119027
2010-11-14 05:25:15 +00:00
NAKAMURA Takumi d477fe544c Makefile: Follow r118918, to add configuration "ENABLE_DOCS".
llvm-svn: 119025
2010-11-14 03:29:27 +00:00
NAKAMURA Takumi e82858299c test/CodeGenCXX/dyncast.cpp: Remove XFAIL:win32 with tweaking llvm/utils/FileCheck in r119023, due to DOSish crlf issue.
llvm-svn: 119024
2010-11-14 03:29:22 +00:00
Fariborz Jahanian 9ffe24f186 Initialize couple of fields.
llvm-svn: 119014
2010-11-13 23:48:30 +00:00
Fariborz Jahanian 9b4dc09746 Removing these test till redo them so they won't depend
on the built compiler.

llvm-svn: 119013
2010-11-13 23:04:46 +00:00
Fariborz Jahanian e988bdac44 Block API patch to do copy ctor of copied-in cxx objects in
copy helper function and dtor of copied cxx objects
in dispose helper functions. __block variables
TBD next.

llvm-svn: 119011
2010-11-13 21:53:34 +00:00
Douglas Gregor 052caec1f3 When complaining about ambiguous overload resolution for a unary or
binary operator, provide the types.

llvm-svn: 119008
2010-11-13 20:06:38 +00:00
Douglas Gregor 72ebdabc5d When we're type-checking the result of calling a conversion function
(while computing user conversion sequences), make sure that a result
of class type is a complete class type. Had we gone through
ActOnCallExpr, this would have happened when we built the CallExpr.

Fixes PR8425.

llvm-svn: 119005
2010-11-13 19:36:57 +00:00
Daniel Dunbar fc8aefb0ba Driver: Support -Oz as an alias for -Os.
llvm-svn: 119003
2010-11-13 18:17:11 +00:00
Chandler Carruth 456daba135 Switch to using %clang_cc1 properly rather than manually passing the -cc1 flag.
llvm-svn: 118996
2010-11-13 10:19:35 +00:00
John McCall c5e62b47af Introduce five new cast kinds for various conversions into and
between complex types.

llvm-svn: 118994
2010-11-13 09:02:35 +00:00
John McCall d005ac937e Bring UsualArithmeticConversionsType back into Sema and cast the
operands appropriately.  There are a lot of missing complex-related
cast kinds.

llvm-svn: 118993
2010-11-13 08:17:45 +00:00
Zhongxing Xu 1b038fa00f Do not add implicit dtors for CXXBindTemporaryExpr with elidable
CXXConstructExpr.

llvm-svn: 118991
2010-11-13 07:30:59 +00:00
Ted Kremenek bc8b378848 Rewrite reverse iteration loop in a more natural countdown manner.
llvm-svn: 118990
2010-11-13 05:55:56 +00:00
Ted Kremenek 89bad8a6e7 CursorVisitor: migrate CXXNewExpr and CXXDefaultArgExpr over to data-recursive algorithm.
llvm-svn: 118989
2010-11-13 05:55:53 +00:00
John McCall 528729872e Pre-compute all possible usual-arithmetic-conversions results for the
promoted arithmetic types for which builtin operator candidates are
emitted.  A few of these need further analysis.

Removes all the uses of UsualArithmeticConversionsType except the
core function in SemaExpr.cpp.

llvm-svn: 118988
2010-11-13 05:51:15 +00:00
Ted Kremenek fdc5237b5e CursorVisitor: special-case CompoundStmt in data-recursion algorithm so we don't have to enqueue
its children and then reverse them.

llvm-svn: 118986
2010-11-13 05:38:03 +00:00
Ted Kremenek f2819198d2 Refine IdempotentOperationChecker::PathWasCompletelyAnalyzed() to also check
BlockEdges, BlockEntrances, and BlockExits for the target block value.

llvm-svn: 118984
2010-11-13 05:12:26 +00:00
Ted Kremenek cf9dbe9c20 Teach IdempotentOperations::PathWasCompletelyAnalyzed to also consider items remaining in the
worklist that could have impacted the evaluation of a block.

Fixes <rdar://problem/8663596>.

llvm-svn: 118983
2010-11-13 05:04:52 +00:00
Ted Kremenek b02788dbee Add GRWorkList::VisitItemsInWorkList() to allow a client to introspect the contents of a worklist.
This API required changing the BFS worklist to use a deque instead of a queue, but that is better
for performance reasons anyway.

llvm-svn: 118982
2010-11-13 05:04:49 +00:00
John McCall 988ffb7a11 Store the list of arithmetic types as a static array of member pointers
instead of copying them all out at the start.  Not a significant
optimization.

llvm-svn: 118967
2010-11-13 02:01:09 +00:00
John McCall e84af4e486 Introduce a null-to-pointer implicit cast kind.
llvm-svn: 118966
2010-11-13 01:35:44 +00:00
Ted Kremenek 809c6fc93c CursorVisitor: Migrate BlockExpr, CXXTemporaryOBjectExpr, and ObjCEncodeExpr to data-recursive algorithm.
llvm-svn: 118964
2010-11-13 01:09:29 +00:00
Ted Kremenek 573411b539 CursorVisitor: Migrate DeclRefExpr over to data-recursion algorithm.
llvm-svn: 118961
2010-11-13 00:58:18 +00:00
Ted Kremenek 03b8602490 CursorVisitor: migrate GotoStmt to data-recursive algorithm.
llvm-svn: 118960
2010-11-13 00:58:15 +00:00
Ted Kremenek 072e637671 CursorVisitor: migrate DeclStmt over to data-recursive algorithm.
llvm-svn: 118957
2010-11-13 00:36:50 +00:00
Ted Kremenek acff73c3bf CursorVisitor: Convert logic for populating data-recursion worklist from a switch statement to a StmtVisitor. No functionality change.
llvm-svn: 118956
2010-11-13 00:36:47 +00:00
Nick Lewycky 214a0ad0c7 Use dyn_cast result instead of re-casting. Fixes -Werror build with:
/llvm/tools/clang/tools/libclang/CIndex.cpp:1823: error: unused variable 'E' [-Wunused-variable]

llvm-svn: 118947
2010-11-12 23:52:43 +00:00
Douglas Gregor 52773dcef6 Implement C++ [over.match.funcs]p4 as it concerns partial ordering of
function templates. Fixes PR8130.

llvm-svn: 118944
2010-11-12 23:44:13 +00:00
Ted Kremenek e0f9382d64 CursorVisitor: Pull ObjCMessageExpr and explicit casts into data-recursion algorithm.
llvm-svn: 118934
2010-11-12 22:24:57 +00:00
Ted Kremenek 0d693a161c CursorVisitor: migrate ObjCMessageExpr over to data-recursion algorithm.
llvm-svn: 118933
2010-11-12 22:24:55 +00:00
Ted Kremenek cfbbeda7dc CursorVisitor: migrate UnresolvedMemberExpr and UnresolvedLookupExpr over to data-recursion algorithm.
llvm-svn: 118929
2010-11-12 21:34:16 +00:00
Ted Kremenek e12bcf5717 CursorVisitor: migrate CompoundLiteralExpr over to data-recursion algorithm.
llvm-svn: 118928
2010-11-12 21:34:12 +00:00
Ted Kremenek 6a5df579e6 CursorVisitor: add data-recursion support for InitListExprs.
llvm-svn: 118927
2010-11-12 21:34:09 +00:00
Benjamin Kramer c78d86a2af Reduce string thrashing.
llvm-svn: 118915
2010-11-12 18:45:23 +00:00
Ted Kremenek cb035359e8 CursorVisitor: migrate 'DoStmt', 'ForStmt', and 'WhileStmt' over to data-recursion algorithm.
llvm-svn: 118912
2010-11-12 18:27:04 +00:00