Commit Graph

14084 Commits

Author SHA1 Message Date
Charles Davis 9af2d4a614 Start implementing the Microsoft-style name mangler. Mangle simple names
(but not their types; that's later).

NOTE: Right now, variables in the global namespace don't get mangled, even
though they're supposed to be. This is because the default mangler
implements the shouldMangleDeclName() method that tells clang not to mangle
them. This will be fixed in a later patch.

llvm-svn: 105805
2010-06-11 03:07:32 +00:00
Charles Davis 95a546ee4d Add an option to specify the target C++ ABI to the frontend. Use it to
select either the default Itanium ABI or the new, experimental Microsoft ABI.

llvm-svn: 105804
2010-06-11 01:06:47 +00:00
John McCall c392f37ae8 Split DependentNameType into two types. DependentNameType represents the
case of an elaborated-type-specifier like 'typename A<T>::foo', and
DependentTemplateSpecializationType represents the case of an
elaborated-type-specifier like 'typename A<T>::template B<T>'.  The TypeLoc
representation of a DependentTST conveniently exactly matches that of an
ElaboratedType wrapping a TST.

Kill off the explicit rebuild methods for RebuildInCurrentInstantiation;
the standard implementations work fine because the nested name specifier
is computable in the newly-entered context.

llvm-svn: 105801
2010-06-11 00:33:02 +00:00
Nate Begeman e0935ffa50 Multiplies, some shifts, set_lane
llvm-svn: 105793
2010-06-10 18:11:55 +00:00
Chandler Carruth c65667c8ba Another chunk of the new RecursiveASTVisitor implementation: switch the return
value semantics such that we recurse while the visitors return true, and halt
as soon as one returns false. Patch by csilvers.

llvm-svn: 105787
2010-06-10 10:31:57 +00:00
Rafael Espindola ad8fed53ff Create a LinuxTargetInfo on ARM. This make clang correctly expand
__USER_LABEL_PREFIX__.

llvm-svn: 105771
2010-06-10 00:46:51 +00:00
Nate Begeman 4a04b467d9 support _lane ops, and multiplies by scalar.
llvm-svn: 105770
2010-06-10 00:17:56 +00:00
Charles Davis 74ce85980b Add a stub Microsoft Visual C++ ABI class (with stub mangler).
llvm-svn: 105767
2010-06-09 23:25:41 +00:00
Daniel Dunbar bfe71f2416 Driver: Change Option parsing to always create arguments referring to unaliased
options.
 - This matches the intent of the .td files, and will simplify alias handling.
 - PR7321.

llvm-svn: 105763
2010-06-09 22:44:34 +00:00
Daniel Dunbar 35cbfeba8f Driver: Eliminate Arg subclasses, which are now unnecessary.
llvm-svn: 105762
2010-06-09 22:31:08 +00:00
Daniel Dunbar 8b77f73314 Driver: Keep the rendering style in the option, instead of as part of the Arg.
llvm-svn: 105761
2010-06-09 22:31:04 +00:00
Daniel Dunbar 8f1ebabaf7 Driver: Change Arg to just hold the values directly, instead of implicitly
deriving them from the Arg type.

llvm-svn: 105760
2010-06-09 22:31:00 +00:00
Daniel Dunbar 0bcb62dc30 Frontend: Fix crashes on error paths.
llvm-svn: 105759
2010-06-09 22:30:54 +00:00
Sebastian Redl c3eba8f547 Commit my WIP on constexpr support. This commit: an XFAILed test and treating constexpr as a top-level const.
llvm-svn: 105752
2010-06-09 21:19:43 +00:00
Sebastian Redl 243d9057d0 Fix two typos in comments.
llvm-svn: 105751
2010-06-09 21:17:41 +00:00
Daniel Dunbar c656d3e111 Revert "Driver: Change Option parsing to always create arguments referring to
unaliased", this isn't quite right yet.

llvm-svn: 105747
2010-06-09 19:27:07 +00:00
Daniel Dunbar aea0620b89 Driver: Change Option parsing to always create arguments referring to unaliased
options.
 - This matches the intent of the .td files, and will simplify alias handling.
 - PR7321.

llvm-svn: 105744
2010-06-09 19:19:01 +00:00
Daniel Dunbar 26a95c6717 Driver: Add an explicit offset to JoinedArg and JoinedAndSeparateArg, so that
they can be independent of the exact option that created them.

llvm-svn: 105739
2010-06-09 18:49:38 +00:00
Daniel Dunbar d96e279f02 Driver: Change Arg::render methods to use option name instead of string where
possible.

llvm-svn: 105738
2010-06-09 18:49:31 +00:00
Nate Begeman d90aa43bdf Implement codegen for hadd, hsub, max, min, mlal, movl, movn, padal, mov_n
Make note about how to handle the dozen or so multiply by scalar ops.

llvm-svn: 105734
2010-06-09 18:04:15 +00:00
Abramo Bagnara 656e300f03 Added inherited info to template and non-type arguments of templates.
llvm-svn: 105716
2010-06-09 09:26:05 +00:00
Chandler Carruth af80f66997 Major redesign of the RecursiveASTVisitor. This implements the majority of the
new design discussed on cfe-dev, with further steps in that direction to come.
It is already much more complete than the previous visitor.

Patch by Zhanyong and Craig with 80 column wraps and one missing declaration
added by me.

llvm-svn: 105709
2010-06-09 08:17:30 +00:00
Chandler Carruth b52b9100bf Remove an entry for a now deleted file. Fixes the neglected CMake build. ;]
llvm-svn: 105708
2010-06-09 08:12:12 +00:00
John McCall a5dd326ca5 Correctly handle > 257 substitutions in a single mangling, and don't introduce
a spurious substitution for an unscoped dependent template-id after introducing
a substitution for the scoped template-id.

llvm-svn: 105699
2010-06-09 07:26:17 +00:00
Zhongxing Xu 1225aacacf Merge StackAddrLeakChecker and ReturnStackAddressChecker.
llvm-svn: 105687
2010-06-09 06:08:24 +00:00
Zhongxing Xu 4200be5e76 Directly compare the StackFrameContext. This greatly simplifies logic and
improves generality. Thanks Ted.

llvm-svn: 105686
2010-06-09 05:50:38 +00:00
Nate Begeman 4307a25545 More accurate BuiltinsARM.def
vget_lane support

llvm-svn: 105684
2010-06-09 05:30:26 +00:00
Douglas Gregor b4e3533ce1 Fix a typo that breaks the GCC build. Turns out that Clang isn't
diagnosing this code as an error when it should, so I've filed
http://llvm.org/bugs/show_bug.cgi?id=7325. 

llvm-svn: 105683
2010-06-09 05:25:34 +00:00
Tom Care b704270779 Added FixIt support to printf format string checking.
- Refactored LengthModifier to be a class.
- Added toString methods in all member classes of FormatSpecifier.
- FixIt suggestions keep user specified flags unless incorrect.

Limitations:
- The suggestions are not conversion specifier sensitive. For example, if we have a 'pad with zeroes' flag, and the correction is a string conversion specifier, we do not remove the flag. Clang will warn us on the next compilation.

A    test/Sema/format-strings-fixit.c
M    include/clang/Analysis/Analyses/PrintfFormatString.h
M    lib/Analysis/PrintfFormatString.cpp
M    lib/Sema/SemaChecking.cpp

llvm-svn: 105680
2010-06-09 04:11:11 +00:00
Douglas Gregor 1fc3d66da4 Tweak our handling of the notion of a standard conversion sequence
being a subsequence of another standard conversion sequence. Instead
of requiring exact type equality for the second conversion step,
require type *similarity*, which is type equality with cv-qualifiers
removed at all levels. This appears to match the behavior of EDG and
VC++ (albeit not GCC), and feels more intuitive. Big thanks to John
for the line of reasoning that supports this change: since
cv-qualifiers are orthogonal to the second conversion step, we should
ignore them in the type comparison.

llvm-svn: 105678
2010-06-09 03:53:18 +00:00
Rafael Espindola 6bb986d530 Simplify the code a bit and avoid a gcc waring about uninitialized variables.
llvm-svn: 105676
2010-06-09 03:48:40 +00:00
Anders Carlsson 635186a8c4 Get rid of getMangledCXXCtorName and getMangledCXXDtorName.
llvm-svn: 105673
2010-06-09 02:36:32 +00:00
Anders Carlsson 09b5fe68ab More mangling cleanup.
llvm-svn: 105672
2010-06-09 02:30:12 +00:00
Anders Carlsson d4ce4e4bc0 Get rid of an unnecessary getMangledName overload.
llvm-svn: 105671
2010-06-09 02:20:01 +00:00
Rafael Espindola 9cdbd9dc08 Fix a gcc warning.
llvm-svn: 105670
2010-06-09 02:17:08 +00:00
Nate Begeman 5548309fa7 Implement transpose/zip/unzip & table lookup.
Test out some basic constant-checking.

llvm-svn: 105667
2010-06-09 01:10:23 +00:00
Ted Kremenek 076baeb03e Fix memory leak in ASTContext where ASTRecordLayout objects involving C++ structures wouldn't have
their associated memory destroyed when using a BumpPtrAllocator.  These objects internally use
a DenseMap.

llvm-svn: 105659
2010-06-08 23:00:58 +00:00
Ted Kremenek dea66e3e4c Fix memory leak in Preprocessor where MacroInfo objects in the MICache wouldn't have their
associated SmallVectors get deallocated.

llvm-svn: 105658
2010-06-08 23:00:53 +00:00
Jordy Rose 954238366b Code cleanup: remove explicit flush() in favor of using the ostream's str()
llvm-svn: 105657
2010-06-08 22:59:01 +00:00
Anders Carlsson 851318a93a On Darwin, initialization and destruction functions should go into the __StaticInit section.
llvm-svn: 105650
2010-06-08 22:47:50 +00:00
Anders Carlsson b2839e4aa1 Add a global CreateGlobalInitOrDestructFunction and use it for creating global init or destruction functions.
llvm-svn: 105649
2010-06-08 22:40:05 +00:00
Anders Carlsson 9eb101c5d3 Rename __tcf_ to __cxx_global_array_dtor. Remove the UniqueAggreDestructorCount from CodeGenFunction and let LLVM handle uniquing the internal functions instead.
llvm-svn: 105648
2010-06-08 22:30:17 +00:00
Anders Carlsson 282bc10eaa Move GenerateCXXAggrDestructorHelper to CGDeclCXX.cpp where it belongs.
llvm-svn: 105647
2010-06-08 22:17:27 +00:00
Anders Carlsson 165ec0a04f Simplify GenerateCXXAggrDestructorHelper.
llvm-svn: 105646
2010-06-08 22:14:59 +00:00
Douglas Gregor 6f2e095f06 When referring to a tag that was previously declared only as a friend,
build a new declaration for that tag type that will be visible for
future lookups of that tag.

llvm-svn: 105643
2010-06-08 21:27:36 +00:00
Douglas Gregor ce21919bd6 A built-in overload candidate is consider a non-template function when
determining whether one overload candidate is better than
another. Fixes PR7319.

llvm-svn: 105642
2010-06-08 21:03:17 +00:00
Fariborz Jahanian 3b83618054 Block Code Gen. API. Call destructor on descriptior
entry previously constructed via copy constructor.

llvm-svn: 105641
2010-06-08 20:57:22 +00:00
Daniel Dunbar 5d02e0bd8a Simplify libIndex Makefile, which doesn't need to worry about altivec support.
llvm-svn: 105639
2010-06-08 20:57:18 +00:00
Daniel Dunbar ee6b692551 Makefiles: Set Clang CPP compiler flags in a single location, instead of scattered throughout the project Makefiles.
llvm-svn: 105638
2010-06-08 20:44:43 +00:00
Daniel Dunbar e6c1daa8fd Makefile: Switch Clang Makefiles to always include the top-level Clang Makefile.
- This eliminates most dependencies on how Clang is installed relative to LLVM.

llvm-svn: 105637
2010-06-08 20:34:18 +00:00