Commit Graph

85641 Commits

Author SHA1 Message Date
Douglas Gregor
769ba3e50c Make c++ and C++ valid extensions for C++ source files, from Seth Cantrell!
llvm-svn: 106602
2010-06-22 23:43:22 +00:00
Douglas Gregor
a3208f9e7c Vector types are not arithmetic types, either. Note that we now ban
__real myvec and __imag myvec, since they aren't all that useful (it's
just an identity function) but we might want to use them in more
restricted cases in the future (e.g., "__real mycomplexvec" could
extract the real parts of a vector of complex numbers).

llvm-svn: 106601
2010-06-22 23:41:02 +00:00
Bruno Cardoso Lopes
1e13c17a55 Add AVX compare packed instructions
llvm-svn: 106600
2010-06-22 23:37:59 +00:00
Dan Gohman
f1cf963c64 Loosen up this test so that it doesn't depend as much on register
allocation details.

llvm-svn: 106599
2010-06-22 23:32:47 +00:00
Devang Patel
9ad629367d Revert 106592 for now. It causes clang-selfhost build failure.
llvm-svn: 106598
2010-06-22 23:29:55 +00:00
Fariborz Jahanian
3bf0ded346 Patch to provide separate ASTs for multiple ObjC class extension
declarations (implements radar 7928731).

llvm-svn: 106597
2010-06-22 23:20:40 +00:00
Douglas Gregor
c646d13054 Teach Type::isRealType() that vector types are never real types. All
of the callers of isRealType() already assumed this, and one of them
(increment/decrement) mistakenly permitted increments of vector types
because of it.

llvm-svn: 106596
2010-06-22 23:13:52 +00:00
Douglas Gregor
49b4d73451 Type Type::isRealFloatingType() that vectors are not floating-point
types, updating callers of both isFloatingType() and
isRealFloatingType() accordingly. Caught at least one issue where we
allowed one to declare a vector of vectors (!), along with cleaning up
the standard-conversion logic for C++.

llvm-svn: 106595
2010-06-22 23:07:26 +00:00
Dan Gohman
1081f1a0f5 Fix OptimizeMax to handle an odd case where one of the max operands
is another max which folds. This fixes PR7454.

llvm-svn: 106594
2010-06-22 23:07:13 +00:00
Bruno Cardoso Lopes
535aa8ea91 Reapply support for AVX unpack and interleave instructions, with
testcases this time.

llvm-svn: 106593
2010-06-22 23:02:38 +00:00
Devang Patel
87f75f75be If a metadata operand is seeded in value map and the metadata should also be seeded in value map. This is not limited to function local metadata.
Failure to seed metdata in such cases causes troubles when in a cloned module, metadata from a new module refers to values in old module. Usually this results in mysterious bugpoint crashes. For example,

 Checking to see if we can delete global inits: Unknown constant!
 UNREACHABLE executed at /d/g/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp:904!

llvm-svn: 106592
2010-06-22 22:53:21 +00:00
Devang Patel
e43c6487da While cloning a module, clone metadata attached with instructions.
llvm-svn: 106591
2010-06-22 22:50:42 +00:00
Bruno Cardoso Lopes
1a890f9dc0 Add AVX MOV{SS,SD}{rr,rm} instructions
llvm-svn: 106588
2010-06-22 22:38:56 +00:00
Daniel Dunbar
adef9327fe Support -mios-version-min= as an alias for -miphoneos-version-min=.
llvm-svn: 106587
2010-06-22 22:27:12 +00:00
Bill Wendling
8ce69cd95a Fix the formatting of the switch statement and add a missing break.
llvm-svn: 106586
2010-06-22 22:16:17 +00:00
Douglas Gregor
4ffbad1904 Change Type::isFloatingType() to reflect the actual definition of a
"floating type" in C, which does not include vector types. Introduce
Type::hasFloatingRepresentation() for the places where we want to know
whether the underlying representation is one or more floating-point
values. Remove some hacks we had where the former behavior of
Type::isFloatingType() was at odds with the language definition of the
term.

llvm-svn: 106584
2010-06-22 22:12:46 +00:00
Jakob Stoklund Olesen
1023f6bd98 Also convert SUBREG_TO_REG to a KILL when relevant, like the other subreg
instructions.

This does not affect codegen much because SUBREG_TO_REG is only used by X86 and
X86 does not use the register scavenger, but it prevents verifier errors.

llvm-svn: 106583
2010-06-22 22:11:07 +00:00
Bob Wilson
c5d712232d Thumb1 functions using @llvm.returnaddress were not saving the incoming LR.
Radar 8031193.

llvm-svn: 106582
2010-06-22 22:04:24 +00:00
Benjamin Kramer
1e89cd804c Avoid tolower, it's slow and unnecessary.
llvm-svn: 106580
2010-06-22 21:28:05 +00:00
Benjamin Kramer
b328d72d77 Turns out __cxa_demangle returns the size of the buffer instead of the size of
the demangled name. Fall back to strlen.

llvm-svn: 106579
2010-06-22 21:27:55 +00:00
Jim Ingham
05407f6b25 Make an explicit GetThreadSpecNoCreate accessor so you don't have to get the const-ness right to ensure you are not making a copy of the owning breakpoint's ThreadSpec in a breakpoint location. Also change the name from NoCopy to NoCreate since that's clearer.
llvm-svn: 106578
2010-06-22 21:12:54 +00:00
Eric Christopher
6250bd9e3c Move a 64-bit test to the 64-bit file. Fixes an llvm-mc assertion
during test runs.

llvm-svn: 106577
2010-06-22 21:11:51 +00:00
Eric Christopher
e9c1bb6cb1 Look for and use a different darwin crash reporter library.
llvm-svn: 106576
2010-06-22 21:01:04 +00:00
Dale Johannesen
6d4802ba6c Add SSE so these actually pass on non-X86 hosts.
llvm-svn: 106575
2010-06-22 20:54:03 +00:00
Jim Grosbach
6c275bc5a2 fix typo
llvm-svn: 106574
2010-06-22 20:52:02 +00:00
Gabor Greif
c89d2aad4c use high-level accessors
llvm-svn: 106573
2010-06-22 20:40:38 +00:00
Bruno Cardoso Lopes
dc883cf45a Fix a subtle multiclass bug: when using class inheritance on
a toplevel 'defm', make sure to properly resolve references.

llvm-svn: 106570
2010-06-22 20:30:50 +00:00
Bill Wendling
7e35d39fee Corresponding test changes for r106564.
llvm-svn: 106569
2010-06-22 20:30:14 +00:00
Daniel Dunbar
a91c0ba88a Driver: Remove some dead code left around after a refactoring. Found by the
Clang static analyzer!

llvm-svn: 106568
2010-06-22 20:18:18 +00:00
Gabor Greif
b575cf69f4 warmup ritual: use high-level argument accessors
llvm-svn: 106563
2010-06-22 19:46:37 +00:00
Mon P Wang
825639e849 Move v-binop-widen tests to X86 since they don't work on all platforms
llvm-svn: 106562
2010-06-22 19:40:50 +00:00
Ted Kremenek
55081f9317 Don't assert on C++ casts that are currently not handled by the static analyzer.
Instead, halt the analysis of the current path, which is what we do in GRExprEngine::ProcessStmt
for all other C++ constructs not currently handled by the analyzer.

llvm-svn: 106561
2010-06-22 19:05:10 +00:00
Devang Patel
e3fbbd19ed Clone named metadata while cloning a module.
Reapply Bob's patch.

llvm-svn: 106560
2010-06-22 18:52:38 +00:00
Bruno Cardoso Lopes
3af915f84b Reorganize logical and arithmetic SSE 1 & 2 instructions
llvm-svn: 106557
2010-06-22 18:17:40 +00:00
Bruno Cardoso Lopes
b91af24d3e Reorganize SSE instructions, making easier to see oportunities for refactoring
llvm-svn: 106556
2010-06-22 18:09:32 +00:00
Dan Gohman
3570f81b1e Move PHIElimination's SplitCriticalEdge for MachineBasicBlocks out
into a utility routine, teach it how to update MachineLoopInfo, and
make use of it in MachineLICM to split critical edges on demand.

llvm-svn: 106555
2010-06-22 17:25:57 +00:00
Fariborz Jahanian
a9f90275cc Trying to make BuildBot happy again (related to PR7431).
llvm-svn: 106553
2010-06-22 17:08:32 +00:00
Argyrios Kyrtzidis
6e57c35513 Read/write CXXDeleteExpr from/to PCH.
llvm-svn: 106552
2010-06-22 17:07:59 +00:00
Douglas Gregor
db48cf3c31 Don't allow vector conversions to sneak in under the guise of
floating-point conversions or floating-integral conversions. We
really, really, really need to make isFloatingType() and friends not
apply to vector types.

llvm-svn: 106551
2010-06-22 16:52:27 +00:00
Fariborz Jahanian
7966aff294 Fixes a problem in generation of meta-data for
category implementation whereby property list was missing.
NeXt ObjC runtime (radar 8093297).

llvm-svn: 106550
2010-06-22 16:33:55 +00:00
Anders Carlsson
ea836bc41c Switch over to the new caching version of getMangledName.
llvm-svn: 106549
2010-06-22 16:16:50 +00:00
Jakob Stoklund Olesen
9c47dac677 Remove the SimpleJoin optimization from SimpleRegisterCoalescing.
Measurements show that it does not speed up coalescing, so there is no reason
the keep the added complexity around.

Also clean out some unused methods and static functions.

llvm-svn: 106548
2010-06-22 16:13:57 +00:00
Anders Carlsson
2e2f4d2e6d Add a new variant of getMangledName that caches the mangling for decls.
llvm-svn: 106547
2010-06-22 16:05:32 +00:00
Anders Carlsson
16d9f1788e Add GlobalDecl::getCanonicalDecl.
llvm-svn: 106546
2010-06-22 16:00:14 +00:00
Benjamin Kramer
eb9165c08f Reduce code duplication.
This also moves strlen out of the mutex scope.

llvm-svn: 106545
2010-06-22 15:28:34 +00:00
Benjamin Kramer
53a61dc531 Ensure GetDemangledName's thread safety by making the demangle buffer thread specific.
I'm not sure when multiple threads enter this method but a race-condition
causing a crash in malloc can be reproduced with this little script:

echo file $(which lldb) > cmd
echo "run\nbreak set -n main\nrun\nexit" >> cmd
lldb -s cmd

It may need a few runs before it crashes though.

llvm-svn: 106544
2010-06-22 15:28:29 +00:00
Dan Gohman
3986af0c5a Split out the code for finding a unique loop predecessor from
getLoopPreheader into a separate function, for clients which don't
require a proper preheader.

llvm-svn: 106543
2010-06-22 15:25:42 +00:00
Dan Gohman
d2d1ae105d Use pre-increment instead of post-increment when the result is not used.
llvm-svn: 106542
2010-06-22 15:08:57 +00:00
Douglas Gregor
a46d66122f When we ask for the enumerators of an EnumDecl, make sure we get them even if we have a EnumDecl that is not the definition of the enumeration
llvm-svn: 106541
2010-06-22 14:45:56 +00:00
Douglas Gregor
c9ea2d5a67 In C++, allow a declaration of an enum to follow a definition of that
enum as a GNU extension.

llvm-svn: 106540
2010-06-22 14:26:35 +00:00