Commit Graph

68091 Commits

Author SHA1 Message Date
Chris Lattner ee8f74f5d1 fix PR4963: folding insertvalue would sometimes turn a packed struct into
an unpacked one.

llvm-svn: 81845
2009-09-15 06:28:12 +00:00
Anders Carlsson 611da28725 Revert for real.
llvm-svn: 81844
2009-09-15 05:49:31 +00:00
Chris Lattner e0987215f0 add a new CallGraphNode::replaceCallEdge method and use it from
argpromote to avoid invalidating an iterator.  This fixes PR4977.
All clang tests now pass with expensive checking (on my system 
at least).

llvm-svn: 81843
2009-09-15 05:40:35 +00:00
Anders Carlsson e5506884cc Whoops, didn't mean to commit this.
llvm-svn: 81842
2009-09-15 05:31:01 +00:00
Anders Carlsson 4e66cda3f7 Only reuse an already existing ImplicitCastExpr if the cast kinds are the same.
llvm-svn: 81841
2009-09-15 05:28:24 +00:00
Chris Lattner e9a4992399 add newline to debug dump
llvm-svn: 81840
2009-09-15 05:14:57 +00:00
Anders Carlsson d3bc31f04f Get rid of the CastInfo struct.
llvm-svn: 81839
2009-09-15 05:13:45 +00:00
Chris Lattner d4d966f500 make -debug-pass=Executions show information about what call graph nodes
are in the SCC for each execution of a CGSCC pass.

llvm-svn: 81838
2009-09-15 05:03:04 +00:00
Anders Carlsson 7cd39e0721 Handle reinterpret_cast between integral types and pointer types.
llvm-svn: 81837
2009-09-15 04:48:33 +00:00
Chris Lattner f82f27be3f add some missing quotes in debug output
llvm-svn: 81836
2009-09-15 04:45:26 +00:00
Anders Carlsson 04c3bf4fab Codegen support for nullptr from C++0x.
llvm-svn: 81835
2009-09-15 04:39:46 +00:00
Chris Lattner 2b979ef128 switch scciterator to use DenseMap instead of std::map
llvm-svn: 81834
2009-09-15 04:37:49 +00:00
Chris Lattner 30fceaba05 this is failing on linux hosts, force a triple.
llvm-svn: 81833
2009-09-15 04:27:29 +00:00
Ted Kremenek b66229464e Per feedback from Eli, recognize in the transfer function logic for
__builtin_offsetof in the static analyzer that __builtin_offsetof is
not guaranteed to return an integer constant.  We will need to shore
this up later, but now at least we have correct support for when this
*is* an integer constant.

llvm-svn: 81830
2009-09-15 04:19:09 +00:00
Ted Kremenek 8e780355b7 Remove invalid add_dependencies line to unbreak the CMake build.
llvm-svn: 81827
2009-09-15 04:06:36 +00:00
Mikhail Glushenkov 0adf07eb9e Get rid of GetProcessId in Win32/Program.inc.
GetProcessId was introduced only in XP. As a bonus, this change makes Program
objects copyable, since Program is now basically a PID.

llvm-svn: 81826
2009-09-15 03:39:45 +00:00
Ted Kremenek 3413f277d0 Fix typo in comment.
llvm-svn: 81825
2009-09-15 03:28:00 +00:00
Chris Lattner 170c116aa7 merge one more in.
llvm-svn: 81824
2009-09-15 02:27:23 +00:00
Chris Lattner 42aaa6e443 merge some more cmov tests into cmov.ll
llvm-svn: 81823
2009-09-15 02:25:21 +00:00
Chris Lattner baf78e5b52 merge two cmov tests into one.
llvm-svn: 81822
2009-09-15 02:22:47 +00:00
Dan Gohman 520a6856ba Don't pull a load through a callseq_start if the load's chain
has multiple uses, as one of the other uses may be on a path
to a different node above the callseq_start, because that
leads to a cyclic graph. This problem is exposed when
-combiner-global-alias-analysis is used. This fixes PR4880.

llvm-svn: 81821
2009-09-15 01:22:01 +00:00
Ted Kremenek 27347135dd Add static analyzer transfer function support for __builtin_offsetof.
llvm-svn: 81820
2009-09-15 00:40:32 +00:00
Nate Begeman d41f8fd2b3 Remove incorrect CSE code from r81813.
llvm-svn: 81819
2009-09-15 00:38:09 +00:00
Sean Callanan 050e0cdb9a Modified the Intel instruction tables to include
versions of CALL and JMP with segmented addresses
provided in-line, as pairs of immediates.

llvm-svn: 81818
2009-09-15 00:35:17 +00:00
Kevin Enderby ccab317837 Added the first bits of the ARM target assembler to llvm-mc. For now it only
parses the .word directive as 4 bytes and ARMAsmParser::ParseInstruction will
give an error is called.  Broke out the test of the .word directive into two
different test cases, one for x86 and one for arm.

llvm-svn: 81817
2009-09-15 00:27:25 +00:00
Nate Begeman 879d8f1c3e Substantially speed up combiner-aa in the following ways:
1. Switch from an std::set to a SmallPtrSet for visited chain nodes.
2. Do not force the recursive flattening of token factor nodes, regardless of
   use count.
3. Immediately process newly created TokenFactor nodes.

Also, improve combiner-aa by teaching it that loads to non-overlapping offsets
of relatively aligned objects cannot alias.

These changes result in a >5x speedup for combiner-aa on most testcases.

llvm-svn: 81816
2009-09-15 00:18:30 +00:00
Nate Begeman 01c1e1152d Teach the legalizer to propagate the original alignment of loads and store when
it splits them.

llvm-svn: 81815
2009-09-15 00:14:28 +00:00
Dan Gohman 65829a4ccb On x86-64, the 32-bit cmov doesn't actually clear the high 32-bit of
its result if the condition is false.

llvm-svn: 81814
2009-09-15 00:14:11 +00:00
Nate Begeman 02a685a914 Add an "original alignment" field to load and store nodes. This enables the
DAG Combiner to disambiguate chains for loads and stores of types which are
 broken up by the Legalizer into smaller pieces.  

llvm-svn: 81813
2009-09-15 00:13:12 +00:00
Fariborz Jahanian 19c7328881 Issue a good diagnostics when attempt to select
a type convesion function results in ambiguity.

llvm-svn: 81812
2009-09-15 00:10:11 +00:00
Chris Lattner f8122966a9 clang tracks multiple levels of macro expansion
llvm-svn: 81811
2009-09-14 23:44:08 +00:00
Dan Gohman f9eafce3af When extending a memset range past the front, set the alignment of the
memset region to the alignment of the new start address.

llvm-svn: 81810
2009-09-14 23:39:10 +00:00
Nick Kledzik ad160c0330 add conversion functions and test cases for ARM
llvm-svn: 81809
2009-09-14 23:26:56 +00:00
Anders Carlsson 3fa58d1f63 Diagnose taking the address of a bit-field inside a conditional operator.
llvm-svn: 81808
2009-09-14 23:15:26 +00:00
Douglas Gregor 6010da024c Implement partial ordering of function templates when calling a
conversion function.

llvm-svn: 81807
2009-09-14 23:02:14 +00:00
Douglas Gregor 2e0807cd75 Slightly improve the test for partial ordering of overloaded function
templates.

llvm-svn: 81806
2009-09-14 22:31:20 +00:00
Douglas Gregor 48bc374d1e Test function template partial ordering when resolving the address of
an overloaded function (template).

llvm-svn: 81804
2009-09-14 22:02:01 +00:00
Ted Kremenek 4112969df1 Fix: <rdar://problem/5905851> do not report a leak when post-dominated by a call
to a noreturn or panic function

llvm-svn: 81803
2009-09-14 22:01:32 +00:00
Anders Carlsson 2898af59dc Update tests
llvm-svn: 81802
2009-09-14 22:00:20 +00:00
John McCall 27b5c253d8 Skeletal support for friend class templates.
llvm-svn: 81801
2009-09-14 21:59:20 +00:00
Erick Tryzelaar b4e19177cb Expose initializing the native target for the execution engine.
llvm-svn: 81800
2009-09-14 21:54:32 +00:00
Erick Tryzelaar c8a18f97bb Make sure to initialize the fpm in the ocaml tutorial.
llvm-svn: 81799
2009-09-14 21:54:15 +00:00
Daniel Dunbar 09d3362bf5 ARM/[A]APCS: Ignore empty records passed as arguments.
llvm-svn: 81798
2009-09-14 21:54:03 +00:00
Anders Carlsson 0e795ffbb0 For consistency, use "bit-field" instead of "bitfield" in our diagnostics.
llvm-svn: 81797
2009-09-14 21:48:24 +00:00
Evan Cheng 7f789596f3 Add early coalescing to liveintervals. This is work in progress and is known to miscompute some tests. Read it at your own rish, I have aged 10 year while writing this.
The gist of this is if source of some of the copies that feed into a phi join is defined by the phi join, we'd like to eliminate them. However, if any of the non-identity source overlaps the live interval of the phi join then the coalescer won't be able to coalesce them. The early coalescer's job is to eliminate the identity copies by partially-coalescing the two live intervals.

llvm-svn: 81796
2009-09-14 21:33:42 +00:00
Douglas Gregor e1d2ef3508 Refactor MarkDeductedTemplateParameters into
MarkUsedTemplateParameters, which is able to mark template parameters
used within non-deduced contexts as well as deduced contexts. Use this
to finish the implementation of [temp.deduct.partial]p11.

llvm-svn: 81794
2009-09-14 21:25:05 +00:00
Bill Wendling 6dcc9d1b4b Pull the creation of the "RewindFunction" function out of the loop. It's only
created once, so shouldn't be stuck in the middle of the loop. Also early exit
if there are no uses of UnwindInst in the function.

llvm-svn: 81785
2009-09-14 20:52:37 +00:00
Fariborz Jahanian f4061e39a3 Used visible conversion function api to do overload
resolution of type conversion functions in base and
current class.

llvm-svn: 81784
2009-09-14 20:41:01 +00:00
Ted Kremenek 37a118520c Implement FIXME: free up BugReportEquivClass objects when deleting BugTypes.
llvm-svn: 81783
2009-09-14 20:40:59 +00:00
Dan Gohman 1113741a03 Update a comment to match the source. PseudoSourceValues are now
obtained via accessor functions.

llvm-svn: 81782
2009-09-14 20:40:10 +00:00