Commit Graph

59107 Commits

Author SHA1 Message Date
Nick Lewycky 462cd34332 Don't append ".b" to the names of globals that are being shrunk to booleans.
llvm-svn: 70630
2009-05-02 16:21:50 +00:00
Dan Gohman 6409e7d4e9 Don't split critical edges during the AddUsersIfInteresting phase
of LSR. This makes the AddUsersIfInteresting phase of LSR a pure
analysis instead of a phase that potentially does CFG modifications.

The conditions where this code would actually perform a split are
rare, and in the cases where it actually would do a split the split
is usually undone by CodeGenPrepare, and in cases where splits
actually survive into codegen, they appear to hurt more often than
they help.

llvm-svn: 70625
2009-05-02 05:36:01 +00:00
Douglas Gregor 71235ecb7f When determining whether an expression refers to a bit-field, look
into the left-hand side of an assignment expression. This completes
most of PR3500; the only remaining part is to deal with the
GCC-specific implementation-defined behavior for "unsigned long" (and
other) bit-fields.

llvm-svn: 70623
2009-05-02 02:18:30 +00:00
Ted Kremenek 49805454e6 Add CFG support for @synchronized. This fixes <rdar://problem/6848820>.
llvm-svn: 70620
2009-05-02 01:49:13 +00:00
Dan Gohman e6b424e53a Add Base.td to svn:ignore.
llvm-svn: 70619
2009-05-02 01:29:12 +00:00
Chris Lattner c6ad258a6b When creating a dwarf record type for an objc interface, make sure to propagate
the runtime version number onto it, so that the debugger knows it's an objc
interface, not a C struct.  rdar://6848435

llvm-svn: 70618
2009-05-02 01:13:16 +00:00
Chris Lattner 44f3ea7339 capture whether optimizations are enabled or not in debug info
llvm-svn: 70617
2009-05-02 01:04:13 +00:00
Chris Lattner 5912de15d0 encode the version of the objc runtime into the dwarf compile unit. rdar://6848435,
several other fixes coming.

llvm-svn: 70616
2009-05-02 01:00:04 +00:00
Ted Kremenek f520136939 Update checker build.
llvm-svn: 70615
2009-05-02 00:42:33 +00:00
Ted Kremenek 2bfed98b0a Add another null pointer check test case.
llvm-svn: 70614
2009-05-02 00:41:02 +00:00
Douglas Gregor d2c2d172da Fix bitfield promotions in several more cases. We don't seem to work hard enough at determining whether an expression is a bitfield or not, yet.
llvm-svn: 70613
2009-05-02 00:36:19 +00:00
Ted Kremenek 55957a8490 Fix crasher in CFG construction when not properly handling ASTs that contain
expressions not yet properly handled by the CFGBuilder. This failure resulted in
a null CFGBlock* being used in rare cases (causing a crash).

llvm-svn: 70612
2009-05-02 00:13:27 +00:00
Douglas Gregor 637f5f71e1 When -fmessage-length=N is not specified, and if standard error is
going to a terminal, word-wrap to the length of the terminal.

llvm-svn: 70611
2009-05-02 00:03:46 +00:00
Chris Lattner e01821edbd 'The attached patch fixes an issue where llc -march=cpp fails with
"Invalid primitive type" on input containing the x86_fp80 type.'
Patch by Collin Winter!

llvm-svn: 70610
2009-05-01 23:54:26 +00:00
Chris Lattner 82c1512ce4 Drop the default assumption about alignment down to 2 bits from 3. This apparently
helps some problems on win32 platforms (PR4119)

llvm-svn: 70603
2009-05-01 23:48:33 +00:00
Chris Lattner a305422bf5 explicitly know that the alignment of Type* is 3 bits.
llvm-svn: 70602
2009-05-01 23:47:59 +00:00
Mike Stump a71286315f Add Sema checking for __block on vm declarations. Radar 6441502
llvm-svn: 70601
2009-05-01 23:41:47 +00:00
Ted Kremenek 407d81b2cd Add another test case found due to an analyzer regression.
llvm-svn: 70600
2009-05-01 23:35:18 +00:00
Daniel Dunbar 6d0eecad6c Make install target actually work, dependencies FTW.
llvm-svn: 70599
2009-05-01 23:34:58 +00:00
Douglas Gregor cf7b2afc62 When printing a source line as part of a diagnostic, the source line
might be wider than we're supposed to print. In this case, we try to
select the "important" subregion of the source line, which contains
everything that we want to show (e.g., with underlining and the caret
itself) and tries to also contain some of the context. 

From the fantastically long line in the test case, we get an error
message that slices down to this:

message-length.c:18:120: warning: comparison of distinct pointer types
      ('int *' and 'float *')
  a_func_to_call(ip == FloatPointer, ip[ALongIndexName], 
                 ~~ ^  ~~~~~~~~~~~~

There are a bunch of gee-it-sounds-good heuristics in here, which seem
to do well on the various simple tests I've thrown at it. However,
we're going to need to look at a bunch more diagnostics to tweak these
heuristics.

This is the second part of <rdar://problem/6711348>. Almost there! 

llvm-svn: 70597
2009-05-01 23:32:58 +00:00
Anders Carlsson 2bbb86b02e It's an error to call offsetof on a non-POD type.
llvm-svn: 70595
2009-05-01 23:20:30 +00:00
Daniel Dunbar c52d01f8d9 Add ONLY_MAN_DOCS variable to only install the man page, not the html
and ps documentation.

llvm-svn: 70589
2009-05-01 23:11:42 +00:00
Anders Carlsson aa10d656b5 Get rid of CXXDestroyExpr.
llvm-svn: 70586
2009-05-01 22:21:22 +00:00
Ted Kremenek 2c32773fa2 Add a new BFS GRWorkList and make it the default worklist model for
GRCoreEngine. This tends to result in shorter paths for pathological cases.

llvm-svn: 70585
2009-05-01 22:18:46 +00:00
Anders Carlsson f58c243830 Rename CXXExprWithCleanup to CXXExprWithTemporaries.
llvm-svn: 70584
2009-05-01 22:18:43 +00:00
Dan Gohman 410b4fdceb Change the description string of the LoopInfo pass.
"Construction" makes it sound like a pass that might
modify the CFG to construct natural loops.

llvm-svn: 70580
2009-05-01 21:58:05 +00:00
Anders Carlsson 4ac533dc90 We can now call member functions where the base is a pointer.
llvm-svn: 70579
2009-05-01 21:55:16 +00:00
Douglas Gregor 4818553abd Implement -fmessage-length=N, which word-wraps diagnostics to N columns.
Also, put a line of whitespace between the diagnostic and the source
code/caret line when the start of the actual source code text lines up
(or nearly lines up) with the most recent line of the diagnostic. For
example, here it's okay for the last line of the diagnostic to be
(vertically) next to the source line, because there is horizontal
whitespace to separate them:

decl-expr-ambiguity.cpp:12:16: error: function-style cast to a builtin
      type can only take one argument
  typeof(int)(a,5)<<a;

However, here is a case where we need the vertical separation (since
there is no horizontal separation):

message-length.c:10:46: warning: incompatible pointer types initializing 'void
      (int, float, char, float)', expected 'int (*)(int, float, short,
      float)'

      int (*fp1)(int, float, short, float) = f;

This is part one of <rdar://problem/6711348>.

llvm-svn: 70578
2009-05-01 21:53:04 +00:00
Stuart Hastings e54523d56e Prevent looping when DenseSet is abused.
llvm-svn: 70572
2009-05-01 20:47:53 +00:00
Douglas Gregor 8d9c509975 Implement bit-field promotion rules for C99. Fixes PR3500.
llvm-svn: 70571
2009-05-01 20:41:21 +00:00
Eli Friedman 6630d6495f Add support for -Wno-format-zero-length.
llvm-svn: 70570
2009-05-01 20:41:13 +00:00
Misha Brukman 3268c95840 HTML-escape '>' as '&gt;' in sample C++ code.
llvm-svn: 70569
2009-05-01 20:40:51 +00:00
Fariborz Jahanian 07b7165b50 Check for method type conflict between declaration in
class/protocol and implementation which could be
an imm. implementation or down in the inheritance
hierarchy.

llvm-svn: 70568
2009-05-01 20:07:12 +00:00
Anders Carlsson b781bcdc30 Replace more release+static_cast with takeAs.
llvm-svn: 70567
2009-05-01 19:49:17 +00:00
Anders Carlsson 3cbc85985a Replace a bunch of static_cast + release with takeAs.
llvm-svn: 70566
2009-05-01 19:30:39 +00:00
Ted Kremenek 9c21f1d174 StoreManager::CastRegion:
- Don't layer TypedViewRegions on top of any region except
  SymbolicRegions and AllocaRegions.  This follows from my offline
  discussion within Zhongxing about how TypedViewRegions really only
  represent memory getting re-appropriated for a new purpose.

Fallout	from this change:
- Move test case from xfail_rdar_6440393.m to misc-ps-64.m
  (it now passes).

- test/Analysis/fields.c now fails for region store (crash).
  Marking XFAIL.

- test/Analysis/rdar-6441136-region.c now fails (only runs with region store).
  Marking XFAIL.

  Diagnosis: The analyzer now correctly identifies an early out-of-bounds memory
   access then the one flagged:

  rdar-6541136-region.c:17:3: warning: Load or store into an out-of-bound memory position.
    *p = 1;
    ^~

  Changing the line:
   char *p = (void*) &wonky[1];
  to
   char *p = (void*) &wonky[0];

  (which should delay the buffer overrun) causes region store to crash, probably
  because it expects a TypedViewRegion.

- test/Analysis/casts.c (region store) now fails (crash).
  Marking XFAIL.

llvm-svn: 70565
2009-05-01 19:22:20 +00:00
Ted Kremenek a11c607312 Basic Store: Always convert a non::LocAsInteger to a Loc when storing to a pointer.
llvm-svn: 70564
2009-05-01 19:04:28 +00:00
Ted Kremenek 0e3cc24e79 Update CMake file.
llvm-svn: 70563
2009-05-01 18:43:00 +00:00
Anders Carlsson bfdea0f136 Get rid of the implicit deref call when calling member functions where the base is a pointer.
llvm-svn: 70562
2009-05-01 18:34:30 +00:00
Bob Wilson 62a3124fb8 Allow CONCAT_VECTORS nodes to be legal or have custom lowering for some targets.
Changes to take advantage of this will come later.

llvm-svn: 70560
2009-05-01 17:55:32 +00:00
Ted Kremenek 5cfe43ddd3 Add function prototype for OSAtomicCompareAndSwap32Barrier.
llvm-svn: 70559
2009-05-01 17:37:31 +00:00
Ted Kremenek 38ce220817 Fix run line in failing test case (it was missing the '%s' for the
file name, thus causing the test case to hang).

llvm-svn: 70558
2009-05-01 17:29:33 +00:00
Dan Gohman d195a22e51 Actually insert inserted instructions into the InsertedValues map.
llvm-svn: 70557
2009-05-01 17:13:31 +00:00
Dan Gohman 60c613b492 Add an accessor method to allow clients to test if a given expression
is associated with a SCEV expansion.

llvm-svn: 70556
2009-05-01 17:08:34 +00:00
Dan Gohman 65dbe7874f Make RequiresTypeConversion canonicalize the types before calling the
target hooks canLosslesslyBitCastTo and isTruncateFree. This allows
targets to avoid worrying about handling all combinations of integer
and pointer types.

llvm-svn: 70555
2009-05-01 17:07:43 +00:00
Dan Gohman 7227bc88f0 When printing a SCEVUnknown with pointer type, don't print an
artificial "ptrtoint", as it tends to clutter up complicated
expressions. The cast operators now print both source and
destination types, which is usually sufficient.

llvm-svn: 70554
2009-05-01 17:02:22 +00:00
Dan Gohman 150b4c3890 Short-circuit inttoptr-ptrtoint constant expressions; these aren't
always folded by the regular constant folder because it doesn't have
TargetData information.

llvm-svn: 70553
2009-05-01 17:00:00 +00:00
Dan Gohman 719f7d5c86 Make SCEVExpander::addInsertedValue able to accept Values, not just
Instructions.

llvm-svn: 70552
2009-05-01 16:58:31 +00:00
Dan Gohman d3aa4215ef Minor whitespace fix.
llvm-svn: 70551
2009-05-01 16:56:32 +00:00
Dan Gohman 90f73564d0 Fix an 80-column violation.
llvm-svn: 70550
2009-05-01 16:44:56 +00:00