Commit Graph

82568 Commits

Author SHA1 Message Date
Daniel Dunbar 5981377698 IRgen: Fix another case where we generated an invalid access component when we
immediately narrowed the access size. Fix this (and previous case) by just
choosing a better access size up-front.

llvm-svn: 102068
2010-04-22 15:22:33 +00:00
Daniel Dunbar 5d6c07e0e9 IRgen: Fix case where we might generate an access component with width == 0, if
we have to narrow the access side immediately (can happen with packed,
-fno-bitfield-type-align).

llvm-svn: 102067
2010-04-22 14:56:10 +00:00
Douglas Gregor fceea36501 When checking whether to diagnose an initialized "extern" variable,
look for the const on the base type rather than on the top-level
type. Fixes PR6495 properly.

llvm-svn: 102066
2010-04-22 14:36:26 +00:00
Douglas Gregor 73519609d4 Record nested-name-specifiers of when we create
elaborated-type-specifiers. Patch by Enea Zaffanella!

llvm-svn: 102065
2010-04-22 14:24:35 +00:00
Wesley Peck 9bc5e8f45e Fixing a typo in the "Clang project" section of the release notes.
llvm-svn: 102064
2010-04-22 14:19:00 +00:00
Wesley Peck cad613decc Small fix to the "Other Improvements and New Features" section of the release notes.
llvm-svn: 102063
2010-04-22 13:53:54 +00:00
Wesley Peck 3edc1684c2 Fixing small typos in the "New Useful APIs" section of the release notes.
llvm-svn: 102062
2010-04-22 13:50:46 +00:00
Wesley Peck 16144fbecd Fixing small typos in the "ARM Target Improvements" section of the release notes.
llvm-svn: 102061
2010-04-22 13:43:14 +00:00
Wesley Peck ba1ad20983 Rewording the "generated debug information" paragraph in the "Interpreter and JIT Improvements" section of the release notes.
llvm-svn: 102060
2010-04-22 13:36:27 +00:00
Wesley Peck c845916929 Reworking the wording of the "target data string" paragraph in the "Optimizer Improvments" section of the release notes.
llvm-svn: 102059
2010-04-22 13:28:34 +00:00
Gabor Greif d80517c061 <pre> seems to close <p>
llvm-svn: 102057
2010-04-22 10:25:23 +00:00
Gabor Greif 27b1663569 the validator coughed up some problems, most of them fixed
llvm-svn: 102056
2010-04-22 10:21:43 +00:00
Gabor Greif 862b35372f shorten link
llvm-svn: 102055
2010-04-22 10:11:24 +00:00
Chris Lattner ee8f1f0998 static analyzer has its own section
llvm-svn: 102054
2010-04-22 06:39:56 +00:00
Chris Lattner 2284b6aed8 add mc and static analyzer blurbs.
llvm-svn: 102053
2010-04-22 06:38:11 +00:00
Chris Lattner a67df2d537 another checkpoint.
llvm-svn: 102052
2010-04-22 06:28:20 +00:00
Chris Lattner 656db16db4 various updates.
llvm-svn: 102051
2010-04-22 05:41:35 +00:00
Anders Carlsson 05bf00938b Re-land the patch that merges two diagnostics into one now that it passes self-host :)
llvm-svn: 102050
2010-04-22 05:40:53 +00:00
Chris Lattner 131378bd25 fix file header.
llvm-svn: 102049
2010-04-22 05:33:15 +00:00
John McCall 69349f458b Neuter this testcase a little. The way LLVM writes labels for anonymous blocks
makes it impossible to check labels.

llvm-svn: 102048
2010-04-22 03:27:09 +00:00
Daniel Dunbar b219780b72 Suppress compiler warning.
llvm-svn: 102047
2010-04-22 03:17:06 +00:00
Daniel Dunbar fc66e0ed87 IRgen: Set alignment correctly on bit-field accesses.
llvm-svn: 102046
2010-04-22 03:17:04 +00:00
Daniel Dunbar 488f55c271 IRgen: Rewrite bit-field access policy to not access data beyond the bounds of the structure, which we also now verify as part of the post-layout consistency checks.
- This fixes some pedantic bugs with packed structures, as well as major problems with -fno-bitfield-type-align.

 - Fixes PR5591, PR5567, and all known -fno-bitfield-type-align issues.

 - Review appreciated.

llvm-svn: 102045
2010-04-22 02:35:46 +00:00
Daniel Dunbar b6f4b05914 IRgen: Fix CGRecordLayout::print to print the bit-field infos in a consistent order.
llvm-svn: 102044
2010-04-22 02:35:36 +00:00
Daniel Dunbar e448942b76 Revert "Unify two diagnostics into one.", it breaks with an assertion failure on bootstrap.
llvm-svn: 102043
2010-04-22 02:35:33 +00:00
Dan Gohman acd700a24b Don't attempt to analyze values which are obviously undef. This fixes some
assertion failures in extreme cases.

llvm-svn: 102042
2010-04-22 01:35:11 +00:00
Dan Gohman c951e6e414 Tidy a comment.
llvm-svn: 102041
2010-04-22 01:30:05 +00:00
Anders Carlsson 046bb5cc3f Unify two diagnostics into one.
llvm-svn: 102040
2010-04-22 01:17:32 +00:00
John McCall 2e6567ae60 Call PerformCopyInitialization to properly initialize the exception temporary
in a throw expression.  Use EmitAnyExprToMem to emit the throw expression,
which magically elides the final copy-constructor call (which raises a new
strict-compliance bug, but baby steps).  Give __cxa_throw a destructor pointer
if the exception type has a non-trivial destructor.

llvm-svn: 102039
2010-04-22 01:10:34 +00:00
Douglas Gregor 4f4946aaaa Whenever we complain about a failed initialization of a function or
method parameter, provide a note pointing at the parameter itself so
the user does not have to manually look for the function/method being
called and match up parameters to arguments. For example, we now get:

t.c:4:5: warning: incompatible pointer types passing 'long *' to
parameter of
      type 'int *' [-pedantic]
  f(long_ptr);
    ^~~~~~~~
t.c:1:13: note: passing argument to parameter 'x' here
void f(int *x);
            ^

llvm-svn: 102038
2010-04-22 00:20:18 +00:00
Anders Carlsson 3eeb741e6c Remove an unused declaration.
llvm-svn: 102037
2010-04-21 23:55:31 +00:00
Dan Gohman ef78c8ebd7 When computing the alignof value for a vector type, ensure that
the alignment is a power of 2, even in the esoteric case of a
vector element which does not have a power-of-2 sizeof value.

llvm-svn: 102036
2010-04-21 23:32:43 +00:00
Douglas Gregor 6b7f12c039 Switch the initialization of Objective-C message parameters (as occurs
during message sends) over to the new initialization code and away
from the C-only CheckSingleAssignmentConstraints. The enables the use
of C++ types in method parameters and message arguments, as well as
unifying more initialiation code overall.

llvm-svn: 102035
2010-04-21 23:24:10 +00:00
Jakob Stoklund Olesen 14b1d758c6 Run LiveVariables instead of computing liveness locally in -regalloc=fast.
This actually makes everything slower, but the plan is to have isel add <kill>
flags the way it is already adding <dead> flags. Then LiveVariables can be
removed again.

When ignoring the time spent in LiveVariables, -regalloc=fast is now twice as
fast as -regalloc=local.

llvm-svn: 102034
2010-04-21 23:18:07 +00:00
Devang Patel b9ab309650 Encode field accessibility.
llvm-svn: 102033
2010-04-21 23:12:37 +00:00
Nick Kledzik 26274da38f improve arm build support on darwin
llvm-svn: 102032
2010-04-21 22:46:53 +00:00
Douglas Gregor 8d4de67e1d Implement parsing for message sends in Objective-C++. Message sends in
Objective-C++ have a more complex grammar than in Objective-C
(surprise!), because

  (1) The receiver of an instance message can be a qualified name such
  as ::I or identity<I>::type.
  (2) Expressions in C++ can start with a type.

The receiver grammar isn't actually ambiguous; it just takes a bit of
work to parse past the type before deciding whether we have a type or
expression. We do this in two places within the grammar: once for
message sends and once when we're determining whether a []'d clause in
an initializer list is a message send or a C99 designated initializer.

This implementation of Objective-C++ message sends contains one known
extension beyond GCC's implementation, which is to permit a
typename-specifier as the receiver type for a class message, e.g.,

  [typename compute_receiver_type<T>::type method];

Note that the same effect can be achieved in GCC by way of a typedef,
e.g.,

  typedef typename computed_receiver_type<T>::type Computed;
  [Computed method];

so this is merely a convenience.

Note also that message sends still cannot involve dependent types or
values.

llvm-svn: 102031
2010-04-21 22:36:40 +00:00
Nick Kledzik 8e7ebea0b9 add explicit alignment directives to assure arm code is 4-byte aligned
llvm-svn: 102030
2010-04-21 22:36:23 +00:00
Evan Cheng 02e816b317 Do not try to optimize a copy that has already been marked for deletion.
llvm-svn: 102027
2010-04-21 20:57:54 +00:00
Douglas Gregor e5798dcb41 Migrate the responsibility for turning the receiver name in an
Objective-C class message expression into a type from the parser
(which was doing so in two places) to Action::getObjCMessageKind()
which, in the case of Sema, reduces the number of name lookups we need
to perform.

llvm-svn: 102026
2010-04-21 20:38:13 +00:00
Anders Carlsson 4bb6e92902 Diagnose access to fields with private constructors.
llvm-svn: 102025
2010-04-21 20:28:29 +00:00
Douglas Gregor 4fdba13072 Eliminate unused code in Sema::ActOnSuperMessage and use early exits
to reduce nesting. No functionality change. 

llvm-svn: 102022
2010-04-21 20:01:04 +00:00
Douglas Gregor 0c78ad9665 Rework the Parser-Sema interaction for Objective-C message
sends. Major changes include:

  - Expanded the interface from two actions (ActOnInstanceMessage,
    ActOnClassMessage), where ActOnClassMessage also handled sends to
    "super" by checking whether the identifier was "super", to three
    actions (ActOnInstanceMessage, ActOnClassMessage,
    ActOnSuperMessage). Code completion has the same changes.
  - The parser now resolves the type to which we are sending a class
    message, so ActOnClassMessage now accepts a TypeTy* (rather than
    an IdentifierInfo *). This opens the door to more interesting
    types (for Objective-C++ support).
  - Split ActOnInstanceMessage and ActOnClassMessage into parser
    action functions (with their original names) and semantic
    functions (BuildInstanceMessage and BuildClassMessage,
    respectively). At present, this split is onyl used by
    ActOnSuperMessage, which decides which kind of super message it
    has and forwards to the appropriate Build*Message. In the future,
    Build*Message will be used by template instantiation.
  - Use getObjCMessageKind() within the disambiguation of Objective-C
    message sends vs. array designators.

Two notes about substandard bits in this patch:
  - There is some redundancy in the code in ParseObjCMessageExpr and
  ParseInitializerWithPotentialDesignator; this will be addressed
  shortly by centralizing the mapping from identifiers to type names
  for the message receiver.
  - There is some #if 0'd code that won't likely ever be used---it
  handles the use of 'super' in methods whose class does not have a
  superclass---but could be used to model GCC's behavior more
  closely. This code will die in my next check-in, but I want it in
  Subversion.

llvm-svn: 102021
2010-04-21 19:57:20 +00:00
Anders Carlsson 43c64af5f0 Keep tack of whether a base in an InitializedEntity is an inherited virtual base or not. Use this in CheckConstructorAccess.
llvm-svn: 102020
2010-04-21 19:52:01 +00:00
Daniel Dunbar 53fac692fa ABI/x86-32 & x86-64: Alignment on 'byval' must be set when when the alignment
exceeds the minimum ABI alignment.

llvm-svn: 102019
2010-04-21 19:49:55 +00:00
Daniel Dunbar f5dbc072a6 Convert test to FileCheck.
llvm-svn: 102018
2010-04-21 19:34:17 +00:00
Daniel Dunbar 14ec60024c Convert test to FileCheck.
llvm-svn: 102016
2010-04-21 19:10:54 +00:00
Daniel Dunbar 557893d2a8 IRgen/x86-32: Factor out getIndirectResult(), to match x86-64 factoring.
llvm-svn: 102015
2010-04-21 19:10:51 +00:00
Daniel Dunbar 2ba67440b6 IRgen: Add checking that the LLVM and AST record layout offsets agree (for
non-bit-fields).

llvm-svn: 102014
2010-04-21 19:10:49 +00:00
Devang Patel 1a6e399874 Add command line option to disable debug info printing in .s file. This option does not impact debug info generation and preservation through earlier compile starges.
llvm-svn: 102012
2010-04-21 19:08:53 +00:00