platform/upstream/llvm.git
11 years ago[tsan] restore performance critical inlining in tsan: remove static from ALWAYS_INLIN...
Kostya Serebryany [Fri, 29 Mar 2013 09:44:16 +0000 (09:44 +0000)]
[tsan] restore performance critical inlining in tsan: remove static from ALWAYS_INLINE, use ALWAYS_INLINE USED for critical functions.

llvm-svn: 178341

11 years ago[TSan] Build TSan runtime with -fPIE.
Alexander Potapenko [Fri, 29 Mar 2013 09:44:11 +0000 (09:44 +0000)]
[TSan] Build TSan runtime with -fPIE.
This removes all register spills from the performance-critical __tsan_{read,write}{1,2,4,8} functions when the host compiler is GCC.

llvm-svn: 178340

11 years ago[libsanitizer] Put COMMON_CFLAGS/COMMON_CXXFLAGS before Tmp.CFLAGS to let the config...
Alexander Potapenko [Fri, 29 Mar 2013 09:41:10 +0000 (09:41 +0000)]
[libsanitizer] Put COMMON_CFLAGS/COMMON_CXXFLAGS before Tmp.CFLAGS to let the config-specific flags override common flags.

llvm-svn: 178339

11 years agoAdd PPC FP rounding instructions fri[mnpz]
Hal Finkel [Fri, 29 Mar 2013 08:57:48 +0000 (08:57 +0000)]
Add PPC FP rounding instructions fri[mnpz]

These instructions are available on the P5x (and later) and on the A2. They
implement the standard floating-point rounding operations (floor, trunc, etc.).
One caveat: frin (round to nearest) does not implement "ties to even", and so
is only enabled in fast-math mode.

llvm-svn: 178337

11 years ago[Sanitizer] Follow-up for r178238 - replace DCHECKs with regular CHECKs
Alexey Samsonov [Fri, 29 Mar 2013 08:03:01 +0000 (08:03 +0000)]
[Sanitizer] Follow-up for r178238 - replace DCHECKs with regular CHECKs

llvm-svn: 178336

11 years agoFix thinko (and the bots): We still want to warn in C.
Rafael Espindola [Fri, 29 Mar 2013 07:56:05 +0000 (07:56 +0000)]
Fix thinko (and the bots): We still want to warn in C.

llvm-svn: 178335

11 years agoRevert "Fix allocations of SmallVector and SmallPtrSet so they are more prone to"
Rafael Espindola [Fri, 29 Mar 2013 07:11:21 +0000 (07:11 +0000)]
Revert "Fix allocations of SmallVector and SmallPtrSet so they are more prone to"

This reverts commit 617330909f0c26a3f2ab8601a029b9bdca48aa61.

It broke the bots:

/home/clangbuild2/clang-ppc64-2/llvm.src/unittests/ADT/SmallVectorTest.cpp:150: PushPopTest
/home/clangbuild2/clang-ppc64-2/llvm.src/unittests/ADT/SmallVectorTest.cpp:118: Failure
Value of: v[i].getValue()
  Actual: 0
Expected: value
Which is: 2

llvm-svn: 178334

11 years agoDon't special case one line extern "C" decls.
Rafael Espindola [Fri, 29 Mar 2013 07:02:31 +0000 (07:02 +0000)]
Don't special case one line extern "C" decls.

We already avoided warning for

extern "C" const char *Version_string = "2.9";

now we also don't produce any warnings for

extern "C" {
  extern const char *Version_string2 = "2.9";
}

llvm-svn: 178333

11 years agoFix allocations of SmallVector and SmallPtrSet so they are more prone to
Jean-Luc Duprat [Fri, 29 Mar 2013 05:45:22 +0000 (05:45 +0000)]
Fix allocations of SmallVector and SmallPtrSet so they are more prone to
being power-of-two sized.

llvm-svn: 178332

11 years agoAdd RDSEED intrinsic support defined in AVX2 extension
Michael Liao [Fri, 29 Mar 2013 05:17:55 +0000 (05:17 +0000)]
Add RDSEED intrinsic support defined in AVX2 extension

llvm-svn: 178331

11 years agoAdd XTEST intrinsic defined in TSX extension
Michael Liao [Fri, 29 Mar 2013 05:14:06 +0000 (05:14 +0000)]
Add XTEST intrinsic defined in TSX extension

llvm-svn: 178330

11 years agoRemoved trailing whitespace.
Michael Gottesman [Fri, 29 Mar 2013 05:13:07 +0000 (05:13 +0000)]
Removed trailing whitespace.

llvm-svn: 178329

11 years ago[mips] Change type of accumulator registers to Untyped. Add two more accumulator
Akira Hatanaka [Fri, 29 Mar 2013 03:27:21 +0000 (03:27 +0000)]
[mips] Change type of accumulator registers to Untyped. Add two more accumulator
register classes for Mips64 and DSP-ASE.

No functionality changes.

llvm-svn: 178328

11 years ago[mips] Define overloaded versions of storeRegToStack and loadRegFromStack.
Akira Hatanaka [Fri, 29 Mar 2013 02:14:12 +0000 (02:14 +0000)]
[mips] Define overloaded versions of storeRegToStack and loadRegFromStack.

No functionality changes.

llvm-svn: 178327

11 years ago[mips] Add parameter Alignment to MipsFrameLowering's constructor.
Akira Hatanaka [Fri, 29 Mar 2013 01:51:04 +0000 (01:51 +0000)]
[mips] Add parameter Alignment to MipsFrameLowering's constructor.

No functionality changes.

llvm-svn: 178326

11 years agoRationalize how we do Halt-ing before Destroy and Detach.
Jim Ingham [Fri, 29 Mar 2013 01:18:12 +0000 (01:18 +0000)]
Rationalize how we do Halt-ing before Destroy and Detach.

<rdar://problem/13527167>

llvm-svn: 178325

11 years ago“process launch” should “detach” not “kill” if the current process was one we attache...
Jim Ingham [Fri, 29 Mar 2013 00:56:30 +0000 (00:56 +0000)]
“process launch” should “detach” not “kill” if the current process was one we attached to.
“process attach” should ask the same questions as process launch if there is a current process.
“process connect” then “process launch” or “process attach” should actually work.

<rdar://problem/13524210>
<rdar://problem/13524208>
<rdar://problem/13488919>

llvm-svn: 178324

11 years ago[ELF] Add dynamic hash table and get simple dynamic libraries working with Hexagon
Shankar Easwaran [Fri, 29 Mar 2013 00:53:25 +0000 (00:53 +0000)]
[ELF] Add dynamic hash table and get simple dynamic libraries working with Hexagon

llvm-svn: 178323

11 years ago[cfg] Always guard (when AddStaticInitBranches == true) DeclStmts for static variable...
Ted Kremenek [Fri, 29 Mar 2013 00:42:56 +0000 (00:42 +0000)]
[cfg] Always guard (when AddStaticInitBranches == true) DeclStmts for static variables, not just ones with explicit initializers

llvm-svn: 178322

11 years ago[analyzer] Add static initializer test case (from <rdar://problem/13227740>).
Ted Kremenek [Fri, 29 Mar 2013 00:32:36 +0000 (00:32 +0000)]
[analyzer] Add static initializer test case (from <rdar://problem/13227740>).

llvm-svn: 178321

11 years agoRevert r178273 as it broke the Linux bootstrap due to false positives
Timur Iskhodzhanov [Fri, 29 Mar 2013 00:22:03 +0000 (00:22 +0000)]
Revert r178273 as it broke the Linux bootstrap due to false positives

llvm-svn: 178320

11 years agoRevert r178166. According to Howard, this code is actually ok.
Dan Gohman [Fri, 29 Mar 2013 00:13:08 +0000 (00:13 +0000)]
Revert r178166. According to Howard, this code is actually ok.

llvm-svn: 178319

11 years agoAdd static analyzer support for conditionally executing static initializers.
Ted Kremenek [Fri, 29 Mar 2013 00:09:28 +0000 (00:09 +0000)]
Add static analyzer support for conditionally executing static initializers.

llvm-svn: 178318

11 years agoAdd configuration plumbing to enable static initializer branching in the CFG for...
Ted Kremenek [Fri, 29 Mar 2013 00:09:22 +0000 (00:09 +0000)]
Add configuration plumbing to enable static initializer branching in the CFG for the analyzer.

This setting still isn't enabled yet in the analyzer.  This is
just prep work.

llvm-svn: 178317

11 years ago[Mips Assembler] Add support for OR macro with imediate opperand
Jack Carter [Thu, 28 Mar 2013 23:45:13 +0000 (23:45 +0000)]
[Mips Assembler] Add support for OR macro with imediate opperand

Mips assembler supports macros that allows the OR instruction
to have an immediate parameter. This patch adds an instruction
alias that converts this macro into a Mips ORI instruction.

Contributer: Vladimir Medic
llvm-svn: 178316

11 years ago<rdar://problem/11730263>
Greg Clayton [Thu, 28 Mar 2013 23:42:53 +0000 (23:42 +0000)]
<rdar://problem/11730263>

PC relative loads are missing disassembly comments when disassembled in a live process.

This issue was because some sections, like __TEXT and __DATA in libobjc.A.dylib, were being moved when they were put into the dyld shared cache. This could also affect any other system that slides sections individually.

The solution is to keep track of wether the bytes we will disassemble are from an executable file (file address), or from a live process (load address). We now do the right thing based off of this input in all cases.

llvm-svn: 178315

11 years agoAdd support of RDSEED defined in AVX2 extension
Michael Liao [Thu, 28 Mar 2013 23:41:26 +0000 (23:41 +0000)]
Add support of RDSEED defined in AVX2 extension

llvm-svn: 178314

11 years agoObjective-C: Produce precise diagnostic when
Fariborz Jahanian [Thu, 28 Mar 2013 23:39:11 +0000 (23:39 +0000)]
Objective-C: Produce precise diagnostic when
'isa' ivar is accessed provided it is the first
ivar. Fixit hint will follow in another patch.
This is continuation of // rdar://13503456

llvm-svn: 178313

11 years agoEnhance boolean simplification to handle 16-/64-bit RDRAND
Michael Liao [Thu, 28 Mar 2013 23:38:52 +0000 (23:38 +0000)]
Enhance boolean simplification to handle 16-/64-bit RDRAND

- RDRAND always clears the destination value when a random value is not
  available (i.e. CF == 0). This value is truncated or zero-extended as
  the false boolean value to be returned. Boolean simplification needs
  to skip this 'zext' or 'trunc' node.

llvm-svn: 178312

11 years ago[analyzer] Document existence of ConstPointerEscape.
Anna Zaks [Thu, 28 Mar 2013 23:15:32 +0000 (23:15 +0000)]
[analyzer] Document existence of ConstPointerEscape.

llvm-svn: 178311

11 years ago[analyzer] Add support for escape of const pointers and use it to allow “newed” point...
Anna Zaks [Thu, 28 Mar 2013 23:15:29 +0000 (23:15 +0000)]
[analyzer] Add support for escape of const pointers and use it to allow “newed” pointers to escape

Add a new callback that notifies checkers when a const pointer escapes. Currently, this only works
for const pointers passed as a top level parameter into a function. We need to differentiate the const
pointers escape from regular escape since the content pointed by const pointer will not change;
if it’s a file handle, a file cannot be closed; but delete is allowed on const pointers.

This should suppress several false positives reported by the NewDelete checker on llvm codebase.

llvm-svn: 178310

11 years ago[analyzer] Apply the suppression rules to the nil receiver only if the value particip...
Anna Zaks [Thu, 28 Mar 2013 23:15:22 +0000 (23:15 +0000)]
[analyzer] Apply the suppression rules to the nil receiver only if the value participates in the computation of the nil we warn about.

We should only suppress a bug report if the IDCed or null returned nil value is directly related to the value we are warning about. This was
not the case for nil receivers - we would suppress a bug report that had an IDCed nil receiver on the path regardless of how it’s
related to the warning.

1) Thread EnableNullFPSuppression parameter through the visitors to differentiate between tracking the value which
is directly responsible for the bug and other values that visitors are tracking (ex: general tracking of nil receivers).
2) in trackNullOrUndef specifically address the case when a value of the message send is nil due to the receiver being nil.

llvm-svn: 178309

11 years agoSkip moving call address loading into callseq when targets prefer register indirect...
Michael Liao [Thu, 28 Mar 2013 23:13:21 +0000 (23:13 +0000)]
Skip moving call address loading into callseq when targets prefer register indirect call.

To enable a load of a call address to be folded with that call, this
load is moved from outside of callseq into callseq. Such a moving
adds a non-glued node (that load) into a glued sequence. This non-glue
load is only removed when DAG selection folds them into a memory form
call instruction. When such instruction selection is disabled, it breaks
DAG schedule.

To prevent that, such moving is disabled when target favors register
indirect call.

Previous workaround disabling CALL32m/CALL64m insn selection is removed.

llvm-svn: 178308

11 years ago[ms-cxxabi] Add more tests for r178297
Reid Kleckner [Thu, 28 Mar 2013 23:11:29 +0000 (23:11 +0000)]
[ms-cxxabi] Add more tests for r178297

This covers a few cases where the class of a member pointer is not a
CXXRecordDecl.

llvm-svn: 178307

11 years agoRemoved dead code from ObjCARCOpts relating to tracking objc_retainBlocks through...
Michael Gottesman [Thu, 28 Mar 2013 23:08:44 +0000 (23:08 +0000)]
Removed dead code from ObjCARCOpts relating to tracking objc_retainBlocks through the ARC Dataflow analysis. By the time we get to the ARC dataflow analysis, any objc_retainBlock calls are not optimizable.

llvm-svn: 178306

11 years ago[fast-isel] Add a preemptive fix for the case where we fail to materialize an
Chad Rosier [Thu, 28 Mar 2013 23:04:47 +0000 (23:04 +0000)]
[fast-isel] Add a preemptive fix for the case where we fail to materialize an
immediate in a register.  I don't believe this should ever fail, but I see no
harm in trying to make this code bullet proof.

I've added an assert to ensure my assumtion is correct.  If the assertion fires
something is wrong and we should fix it, rather then just silently fall back to
SelectionDAG isel.

llvm-svn: 178305

11 years ago[Mips Assembler] Add alias definitions for jal
Jack Carter [Thu, 28 Mar 2013 23:02:21 +0000 (23:02 +0000)]
[Mips Assembler] Add alias definitions for jal

Mips assembler allows following to be used as aliased instructions:
jal $rs for jalr $rs
jal $rd,$rd for jalr $rd,$rs

This patch provides alias definitions in td files and test cases to show the usage.

Contributer: Vladimir Medic
llvm-svn: 178304

11 years agoAdd the X86 FMAs to the scheduling model.
Nadav Rotem [Thu, 28 Mar 2013 22:54:45 +0000 (22:54 +0000)]
Add the X86 FMAs to the scheduling model.

llvm-svn: 178303

11 years agoMinor simplification.
Bill Wendling [Thu, 28 Mar 2013 22:40:08 +0000 (22:40 +0000)]
Minor simplification.

Go ahead and use the full path for both the .gcno and .gcda files.

llvm-svn: 178302

11 years agoAdd the Haswell machine model.
Nadav Rotem [Thu, 28 Mar 2013 22:34:46 +0000 (22:34 +0000)]
Add the Haswell machine model.

llvm-svn: 178301

11 years agoRemove the unused port from the SandyBridge machine model
Nadav Rotem [Thu, 28 Mar 2013 22:32:41 +0000 (22:32 +0000)]
Remove the unused port from the SandyBridge machine model

llvm-svn: 178300

11 years agoAdd ADX CPUID detection
Michael Liao [Thu, 28 Mar 2013 22:29:53 +0000 (22:29 +0000)]
Add ADX CPUID detection

llvm-svn: 178299

11 years agoBand-aid fix for the TSan RTL build
Timur Iskhodzhanov [Thu, 28 Mar 2013 22:23:03 +0000 (22:23 +0000)]
Band-aid fix for the TSan RTL build

llvm-svn: 178298

11 years ago[sema] Check the result of getAsCXXRecordDecl() to fix the build
Reid Kleckner [Thu, 28 Mar 2013 22:15:11 +0000 (22:15 +0000)]
[sema] Check the result of getAsCXXRecordDecl() to fix the build

I'm not 100% sure what should happen here to find the real
CXXRecordDecl.

llvm-svn: 178297

11 years agoAdd "static" to the Windows ALWAYS_INLINE macro (similar to what we do on POSIX)
Timur Iskhodzhanov [Thu, 28 Mar 2013 22:07:28 +0000 (22:07 +0000)]
Add "static" to the Windows ALWAYS_INLINE macro (similar to what we do on POSIX)

llvm-svn: 178296

11 years agoMaking the buildbot happy again after changes to the default formatter for char[]
Enrico Granata [Thu, 28 Mar 2013 21:58:05 +0000 (21:58 +0000)]
Making the buildbot happy again after changes to the default formatter for char[]

llvm-svn: 178295

11 years agoWarn about more than the first unused variable when -Werror is set.
Matt Beaumont-Gay [Thu, 28 Mar 2013 21:46:45 +0000 (21:46 +0000)]
Warn about more than the first unused variable when -Werror is set.

To do this, thread DiagnosticErrorTrap's hasUnrecoverableErrorOccurred through
to Scope.

llvm-svn: 178294

11 years agoThese two are default in the constructor for MCAsmInfo.
Eric Christopher [Thu, 28 Mar 2013 21:37:18 +0000 (21:37 +0000)]
These two are default in the constructor for MCAsmInfo.

llvm-svn: 178293

11 years ago<rdar://problem/12410225>
Enrico Granata [Thu, 28 Mar 2013 21:36:58 +0000 (21:36 +0000)]
<rdar://problem/12410225>

By default, omit the children for a char[] and just show the string contents
Can be overridden by appropriate command-line flags

llvm-svn: 178292

11 years agoMake Win32 put the SRet address into EAX, fixes PR15556
Timur Iskhodzhanov [Thu, 28 Mar 2013 21:30:04 +0000 (21:30 +0000)]
Make Win32 put the SRet address into EAX, fixes PR15556

llvm-svn: 178291

11 years agoRemove all 'static' before ALWAYS_INLINE
Timur Iskhodzhanov [Thu, 28 Mar 2013 21:16:09 +0000 (21:16 +0000)]
Remove all 'static' before ALWAYS_INLINE

llvm-svn: 178290

11 years ago[sema] Remove unused variable from r178283
Reid Kleckner [Thu, 28 Mar 2013 20:54:13 +0000 (20:54 +0000)]
[sema] Remove unused variable from r178283

Wouldn't it be cool if we had a compiler for Windows that could warn
about these things?

llvm-svn: 178289

11 years agoI believe debug mode for vector<T> (T != bool) is complete. If anyone sees anything...
Howard Hinnant [Thu, 28 Mar 2013 20:35:29 +0000 (20:35 +0000)]
I believe debug mode for vector<T> (T != bool) is complete.  If anyone sees anything more they would like to see on it, please let me know.  Debug mode is activated by compiling with -D_LIBCPP_DEBUG2=1.  Eventually _LIBCPP_DEBUG2 will be renamed to just _LIBCPP_DEBUG.

llvm-svn: 178288

11 years agoSpecify CPUs on the PPC bswap-load-store test
Hal Finkel [Thu, 28 Mar 2013 20:35:18 +0000 (20:35 +0000)]
Specify CPUs on the PPC bswap-load-store test

Otherwise, the CHECK-NOT's might trigger depending on the host's CPU.

llvm-svn: 178287

11 years agoOnly enable 64-bit bswap DAG combines for PPC64
Hal Finkel [Thu, 28 Mar 2013 20:23:46 +0000 (20:23 +0000)]
Only enable 64-bit bswap DAG combines for PPC64

Compiling in 32-bit mode on a P7 would assert after 64-bit DAG combines were
added for bswap with load/store. This is because these combines are really only
valid in 64-bit mode, regardless of the CPU (and this was not being checked).

llvm-svn: 178286

11 years agoNon optimizable objc_retainBlock calls are not forwarding.
Michael Gottesman [Thu, 28 Mar 2013 20:11:30 +0000 (20:11 +0000)]
Non optimizable objc_retainBlock calls are not forwarding.

Since we handle optimizable objc_retainBlocks through strength reduction
in OptimizableIndividualCalls, we know that all code after that point
will only see non-optimizable objc_retainBlock calls. IsForwarding is
only called by functions after that point, so it is ok to just classify
objc_retainBlock as non-forwarding.

<rdar://problem/13249661>.

llvm-svn: 178285

11 years ago[ObjCARC] Strength reduce objc_retainBlock -> objc_retain if the objc_retainBlock...
Michael Gottesman [Thu, 28 Mar 2013 20:11:19 +0000 (20:11 +0000)]
[ObjCARC] Strength reduce objc_retainBlock -> objc_retain if the objc_retainBlock is optimizable.

If an objc_retainBlock has the copy_on_escape metadata attached to it
AND if the block pointer argument only escapes down the stack, we are
allowed to strength reduce the objc_retainBlock to to an objc_retain and
thus optimize it.

Current there is logic in the ARC data flow analysis to handle
this case which is complicated and involved making distinctions in
between objc_retainBlock and objc_retain in certain places and
considering them the same in others.

This patch simplifies said code by:

1. Performing the strength reduction in the initial ARC peephole
analysis (ObjCARCOpts::OptimizeIndividualCalls).

2. Changes the ARC dataflow analysis (which runs after the peephole
analysis) to consider all objc_retainBlock calls to not be optimizable
(since if the call was optimizable, we would have strength reduced it
already).

This patch leaves in the infrastructure in the ARC dataflow analysis to
handle this case, which due to 2 will just be dead code. I am doing this
on purpose to separate the removal of the old code from the testing of
the new code.

<rdar://problem/13249661>.

llvm-svn: 178284

11 years ago[ms-cxxabi] Correctly compute the size of member pointers
Reid Kleckner [Thu, 28 Mar 2013 20:02:56 +0000 (20:02 +0000)]
[ms-cxxabi] Correctly compute the size of member pointers

Summary:
This also relaxes the requirement on Windows that the member pointer
class type be a complete type (http://llvm.org/PR12070).  We still ask
for a complete type to instantiate any templates (MSVC does this), but
if that fails we continue as normal, relying on any inheritance
attributes on the declaration.

Reviewers: rjmccall

CC: triton, timurrrr, cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D568

llvm-svn: 178283

11 years agoObjective-C: Provide fixit suggestions when class object
Fariborz Jahanian [Thu, 28 Mar 2013 19:50:55 +0000 (19:50 +0000)]
Objective-C: Provide fixit suggestions when class object
is accessed via accessing 'isa' ivar to use
object_getClass/object_setClass apis.
// rdar://13503456

llvm-svn: 178282

11 years agoHexagon: Replace switch-case in isDotNewInst with TSFlags.
Jyotsna Verma [Thu, 28 Mar 2013 19:44:04 +0000 (19:44 +0000)]
Hexagon: Replace switch-case in isDotNewInst with TSFlags.

llvm-svn: 178281

11 years agoFix bad indentation in r178276
Hal Finkel [Thu, 28 Mar 2013 19:43:12 +0000 (19:43 +0000)]
Fix bad indentation in r178276

Thanks to Bill Schmidt for pointing this out!

llvm-svn: 178280

11 years agoHexagon: Enable SupportDebugInfomation and DwarfInSection flags.
Jyotsna Verma [Thu, 28 Mar 2013 19:34:49 +0000 (19:34 +0000)]
Hexagon: Enable SupportDebugInfomation and DwarfInSection flags.

llvm-svn: 178279

11 years agoRemove -O3.
Akira Hatanaka [Thu, 28 Mar 2013 19:34:14 +0000 (19:34 +0000)]
Remove -O3.

llvm-svn: 178278

11 years agoUse direct types in most PowerPC Altivec instructions and patterns.
Bill Schmidt [Thu, 28 Mar 2013 19:27:24 +0000 (19:27 +0000)]
Use direct types in most PowerPC Altivec instructions and patterns.

This follows up Ulrich Weigand's work in PPCInstrInfo.td and
PPCInstr64Bit.td by doing the corresponding work for most of the
Altivec patterns.  I have not been able to do anything for the
following classes of instructions:

(1) Vector logicals.  These don't have corresponding intrinsics and
don't have a single obvious vector type.  So far as I can tell I need
to leave these as VRRC.  Affected instructions are:  VAND, VANDC,
VNOR, VOR, VXOR, V_SET0.

(2) Instructions that make use of vector shuffle.  The selection code
promotes all shuffles to v16i8, so any pattern that matches on a
shuffle is constrained.  I haven't found any way to make the patterns
match on their natural types, so I plan to leave these as VRRC.
Affected instructions are:  VMRG*, VSPLTB, VSPLTH, VSPLTW, VPKUHUM,
VPKUWUM.

No change in behavior is anticipated.

llvm-svn: 178277

11 years agoAdd the PPC64 ldbrx/stdbrx instructions
Hal Finkel [Thu, 28 Mar 2013 19:25:55 +0000 (19:25 +0000)]
Add the PPC64 ldbrx/stdbrx instructions

These are 64-bit load/store with byte-swap, and available on the P7 and the A2.
Like the similar instructions for 16- and 32-bit words, these are matched in the
target DAG-combine phase against load/store-bswap pairs.

llvm-svn: 178276

11 years agoFix issue with disassembler decoding CBZ/CBNZ immediates as negatives when the upper...
Gordon Keiser [Thu, 28 Mar 2013 19:22:28 +0000 (19:22 +0000)]
Fix issue with disassembler decoding CBZ/CBNZ immediates as negatives when the upper bit is set.
They should always be zero-extended, not sign extended.  Added test case.

llvm-svn: 178275

11 years agoProvide a fixit to static_cast for reinterpret_casts within a class hierarchy.
Jordan Rose [Thu, 28 Mar 2013 19:09:40 +0000 (19:09 +0000)]
Provide a fixit to static_cast for reinterpret_casts within a class hierarchy.

The suggestion was already in the text of the note; this just adds the
actual fixit and the appropriate test cases.

Patch by Alexander Zinenko!

llvm-svn: 178274

11 years agoImplemented a warning when an input several bitwise operations are
Sam Panzer [Thu, 28 Mar 2013 19:07:11 +0000 (19:07 +0000)]
Implemented a warning when an input several bitwise operations are
likely be implicitly truncated:

  * All forms of Bitwise-and, bitwise-or, and integer multiplication.
  * The assignment form of integer addition, subtraction, and exclusive-or
  * The RHS of the comma operator
  * The LHS of left shifts.

llvm-svn: 178273

11 years agoRename clang::driver::tools::linuxtools to clang::driver::tools::gnutools.
Thomas Schwinge [Thu, 28 Mar 2013 19:04:25 +0000 (19:04 +0000)]
Rename clang::driver::tools::linuxtools to clang::driver::tools::gnutools.

This is about the GNU Binutils' assembler and linker, so reflect that in the
name.

llvm-svn: 178272

11 years agoRename LinuxDistro to Distro.
Thomas Schwinge [Thu, 28 Mar 2013 19:02:48 +0000 (19:02 +0000)]
Rename LinuxDistro to Distro.

The concept of such a software distribution is not tied to the Linux kernel;
for example Debian GNU/Linux, Debian GNU/Hurd, and Debian GNU/kFreeBSD all
share the same source packages and generally the same user-space configuration.

llvm-svn: 178270

11 years ago[ELF] Cache contentType and permissions.
Michael J. Spencer [Thu, 28 Mar 2013 18:58:50 +0000 (18:58 +0000)]
[ELF] Cache contentType and permissions.

llvm-svn: 178269

11 years ago[Driver] Don't open files multiple times.
Michael J. Spencer [Thu, 28 Mar 2013 18:58:35 +0000 (18:58 +0000)]
[Driver] Don't open files multiple times.

llvm-svn: 178268

11 years agoFix a few warnings/errors for compiling with -fno-exceptions.
Howard Hinnant [Thu, 28 Mar 2013 18:56:26 +0000 (18:56 +0000)]
Fix a few warnings/errors for compiling with -fno-exceptions.

llvm-svn: 178267

11 years agoMake all the ALWAYS_INLINE users Windows-friendly; also, avoid ALWAYS_INLINE INLINE...
Timur Iskhodzhanov [Thu, 28 Mar 2013 18:52:40 +0000 (18:52 +0000)]
Make all the ALWAYS_INLINE users Windows-friendly; also, avoid ALWAYS_INLINE INLINE combinations

llvm-svn: 178266

11 years agoHardening the vector iterator synthetic child(ren) provider against item-not-in-clust...
Enrico Granata [Thu, 28 Mar 2013 18:50:54 +0000 (18:50 +0000)]
Hardening the vector iterator synthetic child(ren) provider against item-not-in-cluster asserts

llvm-svn: 178265

11 years agoUse early return in printing logic. Minor cleanup.
Ted Kremenek [Thu, 28 Mar 2013 18:43:18 +0000 (18:43 +0000)]
Use early return in printing logic.  Minor cleanup.

llvm-svn: 178264

11 years agoAdd CFG logic to create a conditional branch for modeling static initializers.
Ted Kremenek [Thu, 28 Mar 2013 18:43:15 +0000 (18:43 +0000)]
Add CFG logic to create a conditional branch for modeling static initializers.

This is an optional variant of the CFG.  This allows analyses to model whether
or not a static initializer has run, e.g.:

  static Foo x = bar();

For basic dataflow analysis in Sema we will just assume that the initializer
always runs.  For the static analyzer we can use this branch to accurately
track whether or not initializers are on.

This patch just adds the (opt-in) functionality to the CFG.  The
static analyzer still needs to be modified to adopt this feature.

llvm-svn: 178263

11 years agoBe sure to take the mutex when the destructor is called in case other threads are...
Greg Clayton [Thu, 28 Mar 2013 18:41:44 +0000 (18:41 +0000)]
Be sure to take the mutex when the destructor is called in case other threads are using these lists and those other threads have the mutex locked.

llvm-svn: 178262

11 years agoFixed handling of comments before preprocessor directives.
Alexander Kornienko [Thu, 28 Mar 2013 18:40:55 +0000 (18:40 +0000)]
Fixed handling of comments before preprocessor directives.

Comments before preprocessor directives used to be stored with InPPDirective
flag set, which prevented correct comment splitting in this case. Fixed by
flushing comments before switching on InPPDirective. Added a new test and fixed
one of the existing tests.

llvm-svn: 178261

11 years agomodularize - Fixed broken array use (asserted in tests). Renamed KindType enum.
John Thompson [Thu, 28 Mar 2013 18:38:43 +0000 (18:38 +0000)]
modularize - Fixed broken array use (asserted in tests).  Renamed KindType enum.

llvm-svn: 178259

11 years ago<rdar://problem/13527167>
Greg Clayton [Thu, 28 Mar 2013 18:33:53 +0000 (18:33 +0000)]
<rdar://problem/13527167>

Partial fix for the above radar.

Call ThreadList::Clear() in the ThreadList destructor so if any other threads currently have the thread list mutex, we won't destroy the list for them while they are using it. ThreadList::Clear() takes the mutex and clears the thread list contents.

llvm-svn: 178257

11 years agoTesting commit access to llvm. Remove two lines of whitespace from the Thumb README.
Gordon Keiser [Thu, 28 Mar 2013 18:26:15 +0000 (18:26 +0000)]
Testing commit access to llvm.  Remove two lines of whitespace from the Thumb README.

llvm-svn: 178256

11 years agoFix order of initialization warning.
Eric Christopher [Thu, 28 Mar 2013 18:22:58 +0000 (18:22 +0000)]
Fix order of initialization warning.

llvm-svn: 178255

11 years agoCorrect spelling of Git.
Thomas Schwinge [Thu, 28 Mar 2013 18:06:20 +0000 (18:06 +0000)]
Correct spelling of Git.

llvm-svn: 178254

11 years agoSecond try at r178075. The llvm breakage has been fixed by r178240.
Howard Hinnant [Thu, 28 Mar 2013 17:44:32 +0000 (17:44 +0000)]
Second try at r178075.  The llvm breakage has been fixed by r178240.

llvm-svn: 178253

11 years agoIntroduces extended register sets whose availability can vary with the target processor.
Ashok Thirumurthi [Thu, 28 Mar 2013 17:27:40 +0000 (17:27 +0000)]
Introduces extended register sets whose availability can vary with the target processor.
- Includes a stub for AVX support in the x86-64 register context and a failing test for register sets that are unavailable.

Thanks to Greg Clayton for his review feedback.

llvm-svn: 178252

11 years agoFix makefile build by linking needed library 'irreader'
Daniel Malea [Thu, 28 Mar 2013 17:08:09 +0000 (17:08 +0000)]
Fix makefile build by linking needed library 'irreader'

llvm-svn: 178251

11 years ago[analyzer] These implements unix.MismatchedDeallocatorChecker checker.
Anton Yartsev [Thu, 28 Mar 2013 17:05:19 +0000 (17:05 +0000)]
[analyzer] These implements unix.MismatchedDeallocatorChecker checker.
+ Improved display names for allocators and deallocators

The checker checks if a deallocation function matches allocation one. ('free' for 'malloc', 'delete' for 'new' etc.)

llvm-svn: 178250

11 years agoMove test since it depends on the X86 backend.
Rafael Espindola [Thu, 28 Mar 2013 17:01:28 +0000 (17:01 +0000)]
Move test since it depends on the X86 backend.

llvm-svn: 178249

11 years agoThese are all simple pointer wrappers. Pass them by value.
Rafael Espindola [Thu, 28 Mar 2013 16:26:16 +0000 (16:26 +0000)]
These are all simple pointer wrappers. Pass them by value.

llvm-svn: 178247

11 years agoHexagon: Use multiclass for gp-relative instructions.
Jyotsna Verma [Thu, 28 Mar 2013 16:25:57 +0000 (16:25 +0000)]
Hexagon: Use multiclass for gp-relative instructions.
Remove noV4T gp-relative instructions.

llvm-svn: 178246

11 years agotsan: print statistics about benign race annotations
Dmitry Vyukov [Thu, 28 Mar 2013 16:21:19 +0000 (16:21 +0000)]
tsan: print statistics about benign race annotations
(total count, unique, matched) if requested with print_benign=1
flag.

llvm-svn: 178245

11 years ago[analyzer] For now assume all standard global 'operator new' functions allocate memor...
Anton Yartsev [Thu, 28 Mar 2013 16:10:38 +0000 (16:10 +0000)]
[analyzer] For now assume all standard global 'operator new' functions allocate memory in heap.
+ Improved test coverage for cplusplus.NewDelete checker.

llvm-svn: 178244

11 years agoAllow users to specify NULL like macros to be replaced
Tareq A. Siraj [Thu, 28 Mar 2013 16:06:59 +0000 (16:06 +0000)]
Allow users to specify NULL like macros to be replaced

-use-nullptr only replaced macro named NULL and ignored any user defined
macros that behaved like NULL. This patch introduces -user-null-macros
command line option to let users specify their custom NULL like macros.

- Added a -user-null-macros command line option that takes a
  comma-separated list of user-defined macros to be replaced when using
  the -use-nullptr transform.
- Added documentation.
- Updated testcase to reflect current behavior.
- Whitespace fixes.

Reviewers: revane, klimek, gribozavr
llvm-svn: 178243

11 years agoFix the Linux build issues introduced by r178191.
Ashok Thirumurthi [Thu, 28 Mar 2013 16:02:31 +0000 (16:02 +0000)]
Fix the Linux build issues introduced by r178191.

- All Linux logging channels now use a single global instance of lldb_private::Log, to handle the case of logging during process tear down.
- Also removed a single use of LogSP in FreeBSD and fixed a typo in a comment while reading through ProcessKDPLog.

Reviewed by Daniel Malea.

llvm-svn: 178242

11 years agoTest commit: Remove whitespace.
Tareq A. Siraj [Thu, 28 Mar 2013 15:48:49 +0000 (15:48 +0000)]
Test commit: Remove whitespace.

llvm-svn: 178241

11 years agoSeciton 24.2.2 of the C++ standard, [iterator.iterators], Table 106
Howard Hinnant [Thu, 28 Mar 2013 15:47:50 +0000 (15:47 +0000)]
Seciton 24.2.2 of the C++ standard, [iterator.iterators], Table 106
requires that the return type of *r for all iterators r be reference,
where reference is defined in [iterator.requirements.general]/p11 as
iterator_traits<X>::reference, and X is the type of r.

But in CFG.h, the dereference operator of PredIterator and SuccIterator
return pointer, not reference.

Furthermore the nested type reference is value_type&, which is not the
type returned from operator*().

This patch simply makes the iterator::reference type value_type*, which
is what the operator*() returns, and then re-lables the return type as
reference.

From a functionality point of view, the only difference is that the
nested reference type is now value_type* instead of value_type&.

llvm-svn: 178240

11 years ago[ASan] Speed-up initialization-order checking: create and use fast versions of Poison...
Alexey Samsonov [Thu, 28 Mar 2013 15:42:43 +0000 (15:42 +0000)]
[ASan] Speed-up initialization-order checking: create and use fast versions of PoisonShadow functions, store copies of __asan_global descriptors in a vector instead of list of pointers. This gives 3x speedup on both benchmarks and real binaries with lots of globals.

llvm-svn: 178239

11 years ago[Sanitizer] Minor enhancements in InternalVector container
Alexey Samsonov [Thu, 28 Mar 2013 15:37:11 +0000 (15:37 +0000)]
[Sanitizer] Minor enhancements in InternalVector container

llvm-svn: 178238

11 years agoAdd missing #ifndef _LIBCPP_NO_EXCEPTIONS around throw in include/thread.
Howard Hinnant [Thu, 28 Mar 2013 15:00:04 +0000 (15:00 +0000)]
Add missing #ifndef _LIBCPP_NO_EXCEPTIONS around throw in include/thread.

llvm-svn: 178237