Commit Graph

86393 Commits

Author SHA1 Message Date
Jordy Rose
674bd55f02 Add a new symbol type, SymbolExtent, to represent the extents of memory regions that may not be known at compile-time (such as those created by malloc). This replaces the old setExtent/getExtent API on Store, which used the GRState's GDM to store SVals.
Also adds a getKnownValue() method to SValuator, which gets the integer value of an SVal if it is known to only have one possible value. There are more places in the code that could be using this, but in general we want to be dealing entirely in SVals, so its usefulness is limited.

The only visible functionality change is that extents are now honored for any DeclRegion, such as fields and Objective-C ivars, rather than just variables. This shows up in bounds-checking and cast-size-checking.

llvm-svn: 107577
2010-07-04 00:00:41 +00:00
Stephen Canon
909f6c7bc4 Further cleanup of ARM bswap implementations, thanks to John Tytgat
llvm-svn: 107576
2010-07-03 21:47:50 +00:00
Johnny Chen
f02ec12796 Make it fail fast if 'mydir' attribute is not overridden by subclasses of
lldbtest.TestBase.

Also removed some debug prints.

llvm-svn: 107575
2010-07-03 20:41:42 +00:00
Benjamin Kramer
ba62bda998 Unbreak test on platforms where size_t != unsigned long.
llvm-svn: 107574
2010-07-03 20:33:13 +00:00
John McCall
1e5d75d73f Mark the operator delete associated with a virtual destructor as referenced.
llvm-svn: 107573
2010-07-03 18:33:00 +00:00
Charles Davis
3babfba597 Mangle Objective-C pointers and block pointers in the Microsoft C++ Mangler.
ObjC pointers were easy enough (as far as the ABI is concerned, they're
just pointers to structs), but I had to invent a new mangling for block
pointers. This is particularly worrying with the Microsoft ABI, because
it is a vendor-specific ABI; extending it could come back to bite us
later when MS extends it on their own (and you know they will).

llvm-svn: 107572
2010-07-03 16:56:59 +00:00
John McCall
1180f8e90f Provide convenience routines to save and restore the current insertion
point.

llvm-svn: 107570
2010-07-03 09:25:20 +00:00
Eli Friedman
c8f595212f Minor amendment to switch-lowering improvement.
llvm-svn: 107569
2010-07-03 08:43:32 +00:00
Charles Davis
3b10dd1bec Fix mangling of array dimensions in the Microsoft C++ Mangler.
llvm-svn: 107568
2010-07-03 08:15:16 +00:00
Charles Davis
d49950a317 Mangle member pointer types in the Microsoft C++ Mangler.
llvm-svn: 107567
2010-07-03 08:01:32 +00:00
Argyrios Kyrtzidis
dae2a1607e When setting the anonymous namespace at PCH reading, it may still be initializing so avoid
the invariant checks at NamespaceDecl::setAnonymousNamespace().

llvm-svn: 107566
2010-07-03 07:57:53 +00:00
Eli Friedman
836fdbc85b Note switch-lowering inefficiency.
llvm-svn: 107565
2010-07-03 07:38:12 +00:00
Charles Davis
0029a2a957 Fix mangling of function pointers in the Microsoft C++ Mangler.
llvm-svn: 107564
2010-07-03 05:53:41 +00:00
Johnny Chen
bf6ffa3b89 Abstracted the lldb-specific unittest.TestCase.setUp()/tearDown() in a separate
module lldbtest.py and refactored the existing test cases to derive from the
abstract base class lldbtest.TestBase.

MOdified the test driver (dotest.py and dotest.pl) to set up additional
PYTHONPATH component for locating the lldbtest module, which sits in the same
directory.

llvm-svn: 107563
2010-07-03 03:41:59 +00:00
Shantonu Sen
df44f74290 Forward -fno-builtin to clang, add .cp as a supported
extension if you otherwise configure scan-build
to do c++ static analysis.

OKed by Ted

llvm-svn: 107562
2010-07-03 03:08:23 +00:00
Charles Davis
77552766d9 Fix mangling of array parameters for functions in the Microsoft C++ Mangler.
Only actual functions get mangled correctly; I don't know how to fix it for
function pointers yet. Thanks to John McCall for the hint.

Also, mangle anonymous tag types. I don't have a suitable testcase yet; I have
a feeling that that's going to need support for static locals, and I haven't
figured out exactly how MSVC's scheme for mangling those works.

llvm-svn: 107561
2010-07-03 02:41:45 +00:00
Bruno Cardoso Lopes
ca99012ac0 Add AVX SSE4.1 blend, mpsadbw and vdp
llvm-svn: 107560
2010-07-03 01:37:03 +00:00
Sean Callanan
2ab712f212 Added the skeleton of an IR transformer that will
prepare IR for execution in the target.  Wired the
expression command to use this IR transformer when
conversion to DWARF fails, and wired conversion to
DWARF to always fail (well, we don't generate any
DWARF...)

llvm-svn: 107559
2010-07-03 01:35:46 +00:00
Bruno Cardoso Lopes
bc75502f09 Add AVX SSE4.1 binop (some forms of packed max,min,mul,pack,cmp) instructions
llvm-svn: 107558
2010-07-03 01:15:47 +00:00
Eric Christopher
128a0197bb Fix typo.
llvm-svn: 107556
2010-07-03 01:09:18 +00:00
Stephen Canon
b84e7dc80e Marginally smaller implementations of bswap for ARMv4, ARMv5 that avoid the need to establish a frame
llvm-svn: 107555
2010-07-03 01:00:49 +00:00
Stephen Canon
7973295a19 Renamed unsigned->float routines to match GCC convention
llvm-svn: 107554
2010-07-03 00:56:03 +00:00
Bruno Cardoso Lopes
fc9cdc4d61 Add AVX SSE4.1 Horizontal Minimum and Position instruction
llvm-svn: 107552
2010-07-03 00:49:21 +00:00
Douglas Gregor
9672f92f7f Lazily declare default constructors. We now delay the construction of
declarations for implicit default constructors, copy constructors,
copy assignment operators, and destructors. On a "simple" translation
unit that includes a bunch of C++ standard library headers, we
generate relatively few of these implicit declarations now:

  4/159 implicit default constructors created
  18/236 implicit copy constructors created
  70/241 implicit copy assignment operators created
  0/173 implicit destructors created

And, on this translation unit, this optimization doesn't really
provide any benefit. I'll do some more performance measurements soon,
but this completes the implementation work for <rdar://problem/8151045>.

llvm-svn: 107551
2010-07-03 00:47:00 +00:00
Evan Cheng
0664a67fe1 Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false.
llvm-svn: 107550
2010-07-03 00:40:23 +00:00
Bruno Cardoso Lopes
621c85b038 Add AVX SSE4.1 round instructions
llvm-svn: 107549
2010-07-03 00:37:44 +00:00
Nick Kledzik
209ac43b76 ARM before armv6 did not supprt 'rev' instruction
llvm-svn: 107548
2010-07-03 00:12:47 +00:00
Jakob Stoklund Olesen
4c82a9e7d0 Detect and handle COPY in many places.
This code is transitional, it will soon be possible to eliminate
isExtractSubreg, isInsertSubreg, and isMoveInstr in most places.

llvm-svn: 107547
2010-07-03 00:04:37 +00:00
Dan Gohman
ece6906ea0 Document that BasicAA respects noalias, while InterproceduralBasicAA
does not.

llvm-svn: 107546
2010-07-02 23:52:36 +00:00
Johnny Chen
f1d2ac7c01 Test variable with function ptr type and that break on the function works.
llvm-svn: 107545
2010-07-02 23:50:37 +00:00
Dan Gohman
de25629e4f Describe which dependencies are relevant to noalias, and document how
AliasAnalyses have the choice to respect noalias.

llvm-svn: 107544
2010-07-02 23:46:54 +00:00
Douglas Gregor
a6d695057c Lazily declare implicit copy constructors.
llvm-svn: 107543
2010-07-02 23:41:54 +00:00
Argyrios Kyrtzidis
3701fcd759 Read/write CastExpr's CXXBaseSpecifierArray for PCH.
llvm-svn: 107542
2010-07-02 23:30:27 +00:00
Argyrios Kyrtzidis
4259ebcdac Fix broken PCH support for CXXDefaultArgExpr.
llvm-svn: 107541
2010-07-02 23:30:15 +00:00
Bruno Cardoso Lopes
5b59c1bf1f Simple refactoring of SSE4.1 instructions, making room for the AVX forms
llvm-svn: 107540
2010-07-02 23:27:59 +00:00
Greg Clayton
13a177aeb8 Plugged 4 more leaks in the libunwind code. One leaks is still left in as it
is quite gnarly code and there is no good way to clean it up. I will have
Jason look at a fix for this.

llvm-svn: 107539
2010-07-02 23:23:14 +00:00
Dan Gohman
3770af5852 Add some html anchors, to allow attributes to be linked to directly.
llvm-svn: 107538
2010-07-02 23:18:08 +00:00
Eric Christopher
5e5416056b 80-col fixup.
llvm-svn: 107537
2010-07-02 23:17:38 +00:00
Douglas Gregor
52b7282081 Introduce a new routine, LookupConstructors(), and use it for all
constructor-name lookup.

llvm-svn: 107536
2010-07-02 23:12:18 +00:00
Stephen Canon
04b97967dd [unsigned] int -> float soft-float conversions for single- and double-precision
llvm-svn: 107535
2010-07-02 23:05:46 +00:00
Jakob Stoklund Olesen
676a15bdf5 Add a new target independent COPY instruction and code to lower it.
The COPY instruction is intended to replace the target specific copy
instructions for virtual registers as well as the EXTRACT_SUBREG and
INSERT_SUBREG instructions in MachineFunctions. It won't we used in a selection
DAG.

COPY is lowered to native register copies by LowerSubregs.

llvm-svn: 107529
2010-07-02 22:29:50 +00:00
Sean Callanan
248e64b5b8 Fixes to improve logging (by printing basic
block labels) and produce cleaner IR (by removing
the thread-safe statics guards)

llvm-svn: 107528
2010-07-02 22:22:28 +00:00
Johnny Chen
03813ec687 Also verified the values of global variables.
llvm-svn: 107525
2010-07-02 22:12:25 +00:00
Stephen Canon
4be0d7ead9 float- and double-to-integer soft-float conversions for compiler-rt
llvm-svn: 107524
2010-07-02 22:10:58 +00:00
Bruno Cardoso Lopes
c7111fd355 - Add support for the rest of AVX SSE3 instructions
- Fix VEX prefix to be emitted with 3 bytes whenever VEX_5M
represents a REX equivalent two byte leading opcode

llvm-svn: 107523
2010-07-02 22:06:54 +00:00
Johnny Chen
85d6948f3d Add a test to show global variables and to verify that they do display as having
global scopes.

llvm-svn: 107522
2010-07-02 22:04:42 +00:00
Douglas Gregor
330b9cff74 Lazily declare copy-assignment operators.
llvm-svn: 107521
2010-07-02 21:50:04 +00:00
Jakob Stoklund Olesen
3b1657b777 Clean up TargetOpcodes.h a bit, and limit the number of places where the full
list of predefined instructions appear. Add some consistency checks.

Ideally, TargetOpcodes.h should be produced by TableGen from Target.td, but it
is hardly worth the effort.

llvm-svn: 107520
2010-07-02 21:44:22 +00:00
Sean Callanan
177909a350 Small fixes to the DWARF relocator.
llvm-svn: 107518
2010-07-02 21:28:35 +00:00
Jim Grosbach
3c43248560 Custom inserters (e.g., conditional moves in Thumb1 can introduce
new basic blocks, and if used as a function argument, that can cause call frame
setup / destroy pairs to be split across a basic block boundary. That prevents
us from doing a simple assertion to check that the pairs match and alloc/
dealloc the same amount of space. Modify the assertion to only check the
amount allocated when there are matching pairs in the same basic block.

rdar://8022442

llvm-svn: 107517
2010-07-02 21:23:37 +00:00