Jakob Stoklund Olesen [Fri, 7 Dec 2012 04:23:29 +0000 (04:23 +0000)]
Add higher-level API for dealing with bundled MachineInstrs.
This is still a work in progress. The purpose is to make bundling and
unbundling operations explicit, and to catch errors where bundles are
broken or created inadvertently.
The old IsInsideBundle flag is replaced by two MI flags: BundledPred
which has the same meaning as IsInsideBundle, and BundledSucc which is
set on instructions that are bundled with a successor. Having two flags
provdes redundancy to detect when a bundle is inadvertently torn by a
splice() or insert(), and it makes it possible to write bundle iterators
that don't need to peek at adjacent instructions.
The new flags can't be manipulated directly (once setIsInsideBundle is
gone). Instead there are MI functions to make and break bundle bonds.
The setIsInsideBundle function will be removed in a future commit. It
should be replaced by bundleWithPred().
llvm-svn: 169583
Jason Molenda [Fri, 7 Dec 2012 03:38:23 +0000 (03:38 +0000)]
<rdar://problem/
12831670>
When using the same-device optimization for shared cache libraries, if
we have an invalid load address for __LINKEDIT, don't try to read
anything out of lldb's own address space. Reading it out of the remote
address space will fail gracefully if we have bad addresses but reading
it out of lldb's own address space will result in a crash.
llvm-svn: 169582
David Blaikie [Fri, 7 Dec 2012 03:28:20 +0000 (03:28 +0000)]
Unbreak the GCC (4.4 & other bot) builds from r169571.
llvm-svn: 169581
Akira Hatanaka [Fri, 7 Dec 2012 03:10:18 +0000 (03:10 +0000)]
[mips] Delete nodes and instructions for dynamic alloca that are no longer in
use.
llvm-svn: 169580
Akira Hatanaka [Fri, 7 Dec 2012 03:06:09 +0000 (03:06 +0000)]
[mips] Shorten predicate name.
llvm-svn: 169579
Akira Hatanaka [Fri, 7 Dec 2012 03:04:05 +0000 (03:04 +0000)]
[mips] Delete unused sub-target features.
llvm-svn: 169578
Akira Hatanaka [Fri, 7 Dec 2012 03:01:24 +0000 (03:01 +0000)]
[mips] Remove unnecessary predicates.
llvm-svn: 169577
Richard Smith [Fri, 7 Dec 2012 02:26:01 +0000 (02:26 +0000)]
Add file missed from r169574!
llvm-svn: 169576
Alexey Samsonov [Fri, 7 Dec 2012 02:11:47 +0000 (02:11 +0000)]
arcconfig for compiler-rt
llvm-svn: 169575
Richard Smith [Fri, 7 Dec 2012 02:10:28 +0000 (02:10 +0000)]
Per [dcl.fct.def.default]p1, don't allow variadic special members to be defaulted.
llvm-svn: 169574
Chandler Carruth [Fri, 7 Dec 2012 02:08:58 +0000 (02:08 +0000)]
Add support to ValueTracking for determining that a pointer is non-null
by virtue of inbounds GEPs that preclude a null pointer.
This is a very common pattern in the code generated by std::vector and
other standard library routines which use allocators that test for null
pervasively. This is one step closer to teaching Clang+LLVM to be able
to produce an empty function for:
void f() {
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
}
Which is related to getting them to completely fold SmallVector
push_back sequences into constants when inlining and other optimizations
make that a possibility.
llvm-svn: 169573
Ted Kremenek [Fri, 7 Dec 2012 02:03:00 +0000 (02:03 +0000)]
Add manualRetain() and manualRelease() to ImmutableMapRef, and add a new constructor.
llvm-svn: 169572
Ted Kremenek [Fri, 7 Dec 2012 01:55:21 +0000 (01:55 +0000)]
Change RegionStore to always use ImmutableMapRef for processing cluster bindings.
This reduces analysis time by 1.2% on one test case (Objective-C), but
also cleans up some of the code conceptually as well. We can possible
just make RegionBindingsRef -> RegionBindings, but I wanted to stage
things.
After this, we should revisit Jordan's optimization of not canonicalizing
the immutable AVL trees for the cluster bindings as well.
llvm-svn: 169571
Jordan Rose [Fri, 7 Dec 2012 01:54:38 +0000 (01:54 +0000)]
[analyzer] Remove possible pessimizations from r169563.
Thanks for reminding me about copy-elision, David. Passing references here
doesn't help when we could get move construction in C++11. If we really
cared, we'd use std::swap to steal the reference from the temporary arg,
but it's probably not /that/ critical outside of Profile anyway.
llvm-svn: 169570
NAKAMURA Takumi [Fri, 7 Dec 2012 01:43:23 +0000 (01:43 +0000)]
Makefile.common: Update a description, s/Source/SOURCES/ , according to MakefileGuide.html#control-variables .
llvm-svn: 169569
NAKAMURA Takumi [Fri, 7 Dec 2012 01:25:45 +0000 (01:25 +0000)]
unittest/googletest/Makefile: Unbreak out-of-tree build.
- Use SOURCES instead of Source. See Makefile.rules and MakefileGuide.html.
- Don't assume the current directory. $(wildcard *.cc) doesn't match anything on corresponding build directory.
llvm-svn: 169568
Greg Clayton [Fri, 7 Dec 2012 00:19:47 +0000 (00:19 +0000)]
<rdar://problem/8908550>
Added "--address" as an available option for "source list".
llvm-svn: 169567
NAKAMURA Takumi [Fri, 7 Dec 2012 00:05:36 +0000 (00:05 +0000)]
test/Index/skip-parsed-bodies/compile_commands.json: Remove XFAIL on cygming.
llvm-svn: 169566
Eli Bendersky [Fri, 7 Dec 2012 00:01:53 +0000 (00:01 +0000)]
Add convenience accessor to Triple for OS == NaCl
llvm-svn: 169565
Alexey Samsonov [Thu, 6 Dec 2012 23:59:54 +0000 (23:59 +0000)]
Try to unbreak makefile build by excluding gtest-all.cc source
llvm-svn: 169564
Jordan Rose [Thu, 6 Dec 2012 23:55:34 +0000 (23:55 +0000)]
[analyzer] Avoid ProgramStateRef copy constructors.
Suggested by David Blaikie. ExplodedNode, CallEvent, and CheckerContext all
hang onto their ProgramState, so the accessors can return a reference to the
internal state rather than preemptively copying it. This helps avoid
temporary ProgramStateRefs, though local variables will still (correctly)
do an extra retain and release.
llvm-svn: 169563
Logan Chien [Thu, 6 Dec 2012 23:40:31 +0000 (23:40 +0000)]
Revert r169557. It seems that the test is too restricted
and will break the build on buildbot.
llvm-svn: 169562
Matt Beaumont-Gay [Thu, 6 Dec 2012 23:15:36 +0000 (23:15 +0000)]
Add a 'using' declaration to suppress GCC's -Woverloaded-virtual while we
decide what pattern we want to follow in the future.
llvm-svn: 169561
Greg Clayton [Thu, 6 Dec 2012 23:12:53 +0000 (23:12 +0000)]
<rdar://problem/
12827789>
Be sure to load dSYM files when the object file is in memory only.
llvm-svn: 169560
Alexey Samsonov [Thu, 6 Dec 2012 23:04:41 +0000 (23:04 +0000)]
Modify the LLVM checkout of googletest:
1) don't delete gtest-all.cc (which is used to gather all gtest source
files in a single file)
2) make including LLVMSupport headers optional (on by default).
Sanitizer tools may want to use their own versions of googletest
compiled with specific flags, instead of the common googletest
library used for all other LLVM/Clang unittests.
llvm-svn: 169559
Argyrios Kyrtzidis [Thu, 6 Dec 2012 23:04:24 +0000 (23:04 +0000)]
[libclang] Add a test to make sure we skip bodies properly from "#pragma once" headers.
llvm-svn: 169558
Logan Chien [Thu, 6 Dec 2012 22:59:37 +0000 (22:59 +0000)]
Add i686-linux-android for gcc toolchain detection.
* Look for i686-linux-android under <sysroot>/lib/gcc.
* This patch also slightly enhance the test suite for
Android GCC toolchain detection.
llvm-svn: 169557
Greg Clayton [Thu, 6 Dec 2012 22:49:16 +0000 (22:49 +0000)]
<rdar://problem/
12820334>
I modified the "Args::StringtoAddress(...)" function to be able to evaluate address expressions. This is now used for any command line arguments or options that takes addresses like:
memory read <addr> [<end-addr>]
memory write <addr>
breakpoint set --address <addr>
disassemble --start-address <addr> --end-address <addr>
It calls the expression parser to evaluate the address expression and will also work around the issue where the compiler doesn't like to add offsets to function pointers (which is what happens when you try to evaluate "main + 12"). So there is a temp fix in the Args::StringtoAddress() to work around this until we can get special compiler support for debug expressions with function pointers.
llvm-svn: 169556
Richard Smith [Thu, 6 Dec 2012 22:40:09 +0000 (22:40 +0000)]
Add extra truthiness.
llvm-svn: 169555
Fariborz Jahanian [Thu, 6 Dec 2012 22:29:01 +0000 (22:29 +0000)]
Fixes Makefile for Format unit tests.
llvm-svn: 169554
Pedro Artigas [Thu, 6 Dec 2012 22:12:44 +0000 (22:12 +0000)]
fixed valgrind issues of prior commit, this change applies r169456 changes back to the tree with fixes. on darwin no valgrind issues exist in the tests that used to fail.
original change description:
change MCContext to work on the doInitialization/doFinalization model
reviewed by Evan Cheng <evan.cheng@apple.com>
llvm-svn: 169553
Jason Molenda [Thu, 6 Dec 2012 22:10:27 +0000 (22:10 +0000)]
Add examples of how to set env vars for the inferior process from lldb.
llvm-svn: 169552
Jakub Staszak [Thu, 6 Dec 2012 22:08:59 +0000 (22:08 +0000)]
Remove unused field.
llvm-svn: 169551
Jakub Staszak [Thu, 6 Dec 2012 21:57:16 +0000 (21:57 +0000)]
Remove trailing spaces.
llvm-svn: 169550
Jim Ingham [Thu, 6 Dec 2012 21:40:51 +0000 (21:40 +0000)]
Mark the "dwarf" version of the test expected fail as well as the dsym version.
llvm-svn: 169549
Matthew Curtis [Thu, 6 Dec 2012 21:25:18 +0000 (21:25 +0000)]
hexagon-toolchain.c now passes on win32
llvm-svn: 169548
Dmitri Gribenko [Thu, 6 Dec 2012 21:24:47 +0000 (21:24 +0000)]
Fix typos in CHECK lines.
Patch by Alexander Zinenko.
llvm-svn: 169547
Dmitri Gribenko [Thu, 6 Dec 2012 21:12:35 +0000 (21:12 +0000)]
Documentation: fix typos and formatting.
llvm-svn: 169546
Matthew Curtis [Thu, 6 Dec 2012 20:55:41 +0000 (20:55 +0000)]
relax hexagon-toolchain.c even more to accomodate mingw32 targets
llvm-svn: 169544
Matthew Curtis [Thu, 6 Dec 2012 20:21:20 +0000 (20:21 +0000)]
relax hexagon-toolchain.c CHECK to accomodate mingw32 targets
llvm-svn: 169543
Benjamin Kramer [Thu, 6 Dec 2012 20:12:03 +0000 (20:12 +0000)]
Simplify PDiag's move assignment overload a bit, the self-move check isn't actually necessary.
This just empties out the diag, which is fine.
llvm-svn: 169542
Ted Kremenek [Thu, 6 Dec 2012 19:41:30 +0000 (19:41 +0000)]
Revert "Allow modifying an ImmutableMap without canonicalizing it immediately."
Jordan and I discussed this, and we don't want this in the API.
llvm-svn: 169541
Argyrios Kyrtzidis [Thu, 6 Dec 2012 19:41:23 +0000 (19:41 +0000)]
Make sure to initialize the HasSkippedBody bit.
llvm-svn: 169540
Argyrios Kyrtzidis [Thu, 6 Dec 2012 19:41:16 +0000 (19:41 +0000)]
[libclang] Introduce a new indexing mode where we skip function bodies
that were already parsed in the same "indexing session".
An indexing session is defined as using the same CXIndexAction object
for multiple clang_indexSourceFile calls.
Passing CXIndexOpt_SkipParsedBodiesInSession as an indexing option will
enable the mode where we try to skip bodies that were already parsed in
another translation unit.
If a function's body was skipped, the "flags" field in the CXIdxDeclInfo
structure will have "CXIdxDeclFlag_Skipped" bit was set.
llvm-svn: 169539
Ted Kremenek [Thu, 6 Dec 2012 19:40:32 +0000 (19:40 +0000)]
Revert "[analyzer] Aggressively cut back on the canonicalization in RegionStore."
Jordan and I discussed this, and we are going to do this another way.
llvm-svn: 169538
Evan Cheng [Thu, 6 Dec 2012 19:13:27 +0000 (19:13 +0000)]
Replace r169459 with something safer. Rather than having computeMaskedBits to
understand target implementation of any_extend / extload, just generate
zero_extend in place of any_extend for liveouts when the target knows the
zero_extend will be implicit (e.g. ARM ldrb / ldrh) or folded (e.g. x86 movz).
rdar://
12771555
llvm-svn: 169536
Benjamin Kramer [Thu, 6 Dec 2012 19:09:30 +0000 (19:09 +0000)]
Add move semantics to PartialDiagnostic, which can be very expensive to copy.
llvm-svn: 169535
Jakub Staszak [Thu, 6 Dec 2012 19:05:46 +0000 (19:05 +0000)]
Remove unneeded function, since PR8156 was fixed over a year ago.
llvm-svn: 169534
Matthew Curtis [Thu, 6 Dec 2012 19:03:09 +0000 (19:03 +0000)]
Un-XFAIL hexagon-toolchain.c test for mingw32
llvm-svn: 169533
Jordan Rose [Thu, 6 Dec 2012 19:01:24 +0000 (19:01 +0000)]
Allow modifying an ImmutableMap without canonicalizing it immediately.
This is an alternative to the ImmutableMapRef interface where a factory
should still be canonicalizing by default, but in certain cases an
improvement can be made by delaying the canonicalization.
llvm-svn: 169532
Argyrios Kyrtzidis [Thu, 6 Dec 2012 18:59:10 +0000 (18:59 +0000)]
Add a bit on FunctionDecl/ObjCMethodDecl to indicate if there was a body
that was skipped by the parser.
llvm-svn: 169531
Jordan Rose [Thu, 6 Dec 2012 18:58:29 +0000 (18:58 +0000)]
[analyzer] Remove isa<> followed by dyn_cast<>.
llvm-svn: 169530
Jordan Rose [Thu, 6 Dec 2012 18:58:26 +0000 (18:58 +0000)]
[analyzer] Remove unused fields from ExprEngine.
'currStmt', 'CleanedState', and 'EntryNode' were being set, but only ever
used locally.
llvm-svn: 169529
Jordan Rose [Thu, 6 Dec 2012 18:58:22 +0000 (18:58 +0000)]
[analyzer] Remove checks that predate the linearized CFG.
llvm-svn: 169528
Jordan Rose [Thu, 6 Dec 2012 18:58:18 +0000 (18:58 +0000)]
[analyzer] Simplify RetainCountChecker's handling of dead symbols.
Previously we made three passes over the set of dead symbols, and removed
them from the state /twice/. Now we combine the autorelease pass and the
symbol death pass, and only have to remove the bindings for the symbols
that leaked.
llvm-svn: 169527
Jordan Rose [Thu, 6 Dec 2012 18:58:15 +0000 (18:58 +0000)]
[analyzer] Use a smarter algorithm to find the last block in an inlined call.
Previously we would search for the last statement, then back up to the
entrance of the block that contained that statement. Now, while we're
scanning for the statement, we just keep track of which blocks are being
exited (in reverse order).
llvm-svn: 169526
Jordan Rose [Thu, 6 Dec 2012 18:58:12 +0000 (18:58 +0000)]
[analyzer] Speed up ExplodedNode::Profile by avoiding copy constructors.
ProgramStateRef::Retain isn't free!
llvm-svn: 169525
Jordan Rose [Thu, 6 Dec 2012 18:58:09 +0000 (18:58 +0000)]
[analyzer] Use optimized assumeDual for branches.
This doesn't seem to make much of a difference in practice, but it does
have the potential to avoid a trip through the constraint manager.
llvm-svn: 169524
Jordan Rose [Thu, 6 Dec 2012 18:58:06 +0000 (18:58 +0000)]
[analyzer] Aggressively cut back on the canonicalization in RegionStore.
Whenever we touch a single bindings cluster multiple times, we can delay
canonicalizing it until the final access. This has some interesting
implications, in particular that we shouldn't remove an /empty/ cluster
from the top-level map until canonicalization.
This is good for a 2% speedup or so on the test case in
<rdar://problem/
12810842>
llvm-svn: 169523
Jordan Rose [Thu, 6 Dec 2012 18:58:01 +0000 (18:58 +0000)]
[analyzer] Remove bindExprAndLocation, which does extra work for no gain.
This feature was probably intended to improve diagnostics, but was currently
only used when dumping the Environment. It shows what location a given value
was loaded from, e.g. when evaluating an LValueToRValue cast.
llvm-svn: 169522
Jakub Staszak [Thu, 6 Dec 2012 18:22:59 +0000 (18:22 +0000)]
Simplify code.
llvm-svn: 169521
Alexander Kornienko [Thu, 6 Dec 2012 18:03:27 +0000 (18:03 +0000)]
Clang-format: IndentCaseLabels option, proper namespace handling
Summary: + tests arranged in groups, as their number is already quite large.
Reviewers: djasper, klimek
Reviewed By: djasper
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D185
llvm-svn: 169520
Fariborz Jahanian [Thu, 6 Dec 2012 17:50:40 +0000 (17:50 +0000)]
Fixes a typo in this test.
llvm-svn: 169519
Alexander Kornienko [Thu, 6 Dec 2012 17:49:17 +0000 (17:49 +0000)]
Clang-format: detect unbalanced braces.
Reviewers: klimek, djasper
Reviewed By: klimek
CC: cfe-commits, silvas
Differential Revision: http://llvm-reviews.chandlerc.com/D176
llvm-svn: 169518
Matthew Curtis [Thu, 6 Dec 2012 17:49:03 +0000 (17:49 +0000)]
Hexagon TC: Add/improve support for small data
threshold, pic, pie
llvm-svn: 169517
Nadav Rotem [Thu, 6 Dec 2012 17:34:13 +0000 (17:34 +0000)]
Fix a bug in the code that merges consecutive stores. Previously we did not
check if loads that happen in between stores alias with the first store in the
chain, only with the second store onwards.
llvm-svn: 169516
Daniel Malea [Thu, 6 Dec 2012 16:52:09 +0000 (16:52 +0000)]
Merge rename fix from libcxxabi (r169402: rename class with name that clashes with GCC 4.6/4.7)
llvm-svn: 169515
Kostya Serebryany [Thu, 6 Dec 2012 16:22:04 +0000 (16:22 +0000)]
[sanitizer] POD-ify the allocator cache
llvm-svn: 169514
Matthew Curtis [Thu, 6 Dec 2012 16:01:06 +0000 (16:01 +0000)]
Fix hexagon-toolchain.c test to handle versioned clang executables.
llvm-svn: 169513
Matthew Curtis [Thu, 6 Dec 2012 15:46:07 +0000 (15:46 +0000)]
Hexagon TC: Reimplement Link::ConstructJob to call
linker directly
Rather than calling gcc.
llvm-svn: 169512
Dmitry Vyukov [Thu, 6 Dec 2012 15:42:54 +0000 (15:42 +0000)]
tsan: fix lint warning and make output tests more robust
llvm-svn: 169511
Benjamin Kramer [Thu, 6 Dec 2012 15:42:21 +0000 (15:42 +0000)]
Sema: Don't emit a warning when __func__ is used in a lambda outside of a function.
Fixes PR14518.
llvm-svn: 169510
NAKAMURA Takumi [Thu, 6 Dec 2012 14:42:56 +0000 (14:42 +0000)]
test/Driver/hexagon-toolchain.c: Unbreak XPASS. Cygwin can be treated as unix-like system.
llvm-svn: 169509
Manuel Klimek [Thu, 6 Dec 2012 14:42:48 +0000 (14:42 +0000)]
Implements multiple parents in the parent map.
Previously we would match the last visited parent, which in the
case of template instantiations was the last instantiated template.
llvm-svn: 169508
Kostya Serebryany [Thu, 6 Dec 2012 14:39:41 +0000 (14:39 +0000)]
[asan/msan] one more test for 32-bit allocator + minor code simplification
llvm-svn: 169507
Kostya Serebryany [Thu, 6 Dec 2012 14:27:32 +0000 (14:27 +0000)]
[asan/msan] add BulkAllocate to the 32-bit allocator (and a test)
llvm-svn: 169506
Matthew Curtis [Thu, 6 Dec 2012 14:16:43 +0000 (14:16 +0000)]
Hexagon TC: Move getHexagonTargetCPU from Tools.cpp to
ToolChains.cpp
This is in anticipation of forthcoming library path changes.
Also ...
- Fixes some inconsistencies in how the arch is passed to tools.
- Add test cases for various forms of arch flags
llvm-svn: 169505
NAKAMURA Takumi [Thu, 6 Dec 2012 13:38:00 +0000 (13:38 +0000)]
MemorySanitizer.cpp: Suppress a warning. [-Wunused-variable]
llvm-svn: 169504
Kostya Serebryany [Thu, 6 Dec 2012 13:34:11 +0000 (13:34 +0000)]
[asan/msan] refactor allocator's BulkAllocate (move to AllocatorFreeList)
llvm-svn: 169503
Dmitry Vyukov [Thu, 6 Dec 2012 13:32:49 +0000 (13:32 +0000)]
tsan: add new file to cmake
llvm-svn: 169502
Dmitry Vyukov [Thu, 6 Dec 2012 13:20:37 +0000 (13:20 +0000)]
tsan: add some more functions for java filtering
llvm-svn: 169501
Daniel Jasper [Thu, 6 Dec 2012 13:16:39 +0000 (13:16 +0000)]
Improve clang-format's handling of unary operators.
llvm-svn: 169500
Kostya Serebryany [Thu, 6 Dec 2012 13:13:58 +0000 (13:13 +0000)]
[asan/msan] add GetBlockBegin to the 32-bit allocator (+test)
llvm-svn: 169499
Matthew Curtis [Thu, 6 Dec 2012 13:06:19 +0000 (13:06 +0000)]
Disable hexagon toolchain test on windows targets
llvm-svn: 169498
Kostya Serebryany [Thu, 6 Dec 2012 13:00:11 +0000 (13:00 +0000)]
[asan/msan] one more test for 32-bit allocator
llvm-svn: 169497
Kostya Serebryany [Thu, 6 Dec 2012 12:49:28 +0000 (12:49 +0000)]
[asan/msan] new 32-bit allocator, basic functionality so far
llvm-svn: 169496
Matthew Curtis [Thu, 6 Dec 2012 12:43:18 +0000 (12:43 +0000)]
Hexagon TC: Update toolchain to add appropriate include
paths
- Inherit from Linux rather than ToolChain
- Override AddClangSystemIncludeArgs and AddClangCXXStdlibIncludeArgs
to properly set include paths.
llvm-svn: 169495
Dmitry Vyukov [Thu, 6 Dec 2012 12:42:53 +0000 (12:42 +0000)]
tsan: add 'free' to java nonsense reports
llvm-svn: 169494
Dmitry Vyukov [Thu, 6 Dec 2012 12:16:15 +0000 (12:16 +0000)]
tsan: add mutexsets to reports
With this change reports say what mutexes the threads hold around the racy memory accesses.
llvm-svn: 169493
NAKAMURA Takumi [Thu, 6 Dec 2012 12:05:25 +0000 (12:05 +0000)]
clang/test/CodeGen/2008-01-07-UnusualIntSize.c: Add triple x86_64. It doesn't assume 32-bit target, for now.
llvm-svn: 169492
Evgeniy Stepanov [Thu, 6 Dec 2012 11:58:59 +0000 (11:58 +0000)]
[msan] Fix a typo in a comment.
llvm-svn: 169491
Evgeniy Stepanov [Thu, 6 Dec 2012 11:41:03 +0000 (11:41 +0000)]
[msan] Do not store origin for clean values.
Instead of unconditionally storing origin with every application store,
only do this when the shadow of the stored value is != 0.
This change also delays instrumentation of stores until after the walk over
function's instructions, because adding new basic blocks confuses InstVisitor.
We only keep 1 origin value per 4 bytes of application memory. This change
fixes the bug when a store of a single clean byte wiped the origin for the
whole 4-byte area.
Since stores of uninitialized values are relatively uncommon, this change
improves performance of track-origins mode by 5% median and by up to 47% on
specs.
llvm-svn: 169490
Chandler Carruth [Thu, 6 Dec 2012 11:14:44 +0000 (11:14 +0000)]
Rework the bitfield access IR generation to address PR13619 and
generally support the C++11 memory model requirements for bitfield
accesses by relying more heavily on LLVM's memory model.
The primary change this introduces is to move from a manually aligned
and strided access pattern across the bits of the bitfield to a much
simpler lump access of all bits in the bitfield followed by math to
extract the bits relevant for the particular field.
This simplifies the code significantly, but relies on LLVM to
intelligently lowering these integers.
I have tested LLVM's lowering both synthetically and in benchmarks. The
lowering appears to be functional, and there are no really significant
performance regressions. Different code patterns accessing bitfields
will vary in how this impacts them. The only real regressions I'm seeing
are a few patterns where the LLVM code generation for loads that feed
directly into a mask operation don't take advantage of the x86 ability
to do a smaller load and a cheap zero-extension. This doesn't regress
any benchmark in the nightly test suite on my box past the noise
threshold, but my box is quite noisy. I'll be watching the LNT numbers,
and will look into further improvements to the LLVM lowering as needed.
llvm-svn: 169489
Daniel Jasper [Thu, 6 Dec 2012 09:56:08 +0000 (09:56 +0000)]
"<<" alignment for clang-format.
Also, small fix for handling the first token correctly.
Review: http://llvm-reviews.chandlerc.com/D177
llvm-svn: 169488
Andy Gibbs [Thu, 6 Dec 2012 07:59:18 +0000 (07:59 +0000)]
Integrate polly test-suite into an llvm "make check-all" if built as part of the whole using cmake.
llvm-svn: 169487
Bill Wendling [Thu, 6 Dec 2012 07:55:19 +0000 (07:55 +0000)]
s/getLowerBoundDefault/getDefaultLowerBound/ for consistency. Also put the more natural check first in the if-then statement.
llvm-svn: 169486
Bill Wendling [Thu, 6 Dec 2012 07:43:17 +0000 (07:43 +0000)]
Remove unused variable.
llvm-svn: 169485
Bill Wendling [Thu, 6 Dec 2012 07:38:10 +0000 (07:38 +0000)]
Handle non-default array bounds.
Some languages, e.g. Ada and Pascal, allow you to specify that the array bounds
are different from the default (1 in these cases). If we have a lower bound
that's non-default, then we emit the lower bound. We also calculate the correct
upper bound in those cases.
llvm-svn: 169484
Craig Topper [Thu, 6 Dec 2012 07:31:16 +0000 (07:31 +0000)]
Remove intrinsic specific instructions for (V)MOVQUmr with patterns pointing to the normal instructions.
llvm-svn: 169482
Ted Kremenek [Thu, 6 Dec 2012 07:17:26 +0000 (07:17 +0000)]
Use the BlockDecl captures list to infer the direct captures for a BlockDataRegion. Fixes <rdar://problem/
12415065>.
We still need to do a recursive walk to determine all static/global variables
referenced by a block, which is needed for region invalidation.
llvm-svn: 169481