platform/upstream/llvm.git
9 years agoIR: Add MDNode::isDistinct()
Duncan P. N. Exon Smith [Wed, 7 Jan 2015 21:35:38 +0000 (21:35 +0000)]
IR: Add MDNode::isDistinct()

Add API to indicate whether an `MDNode` is distinct.  A distinct node is
not stored in the MDNode uniquing tables, and will never be returned by
`MDNode::get()`.

Although distinct nodes are only currently created by uniquing
collisions (when operands change), PR22111 will allow these nodes to be
explicitly created.

llvm-svn: 225401

9 years ago[LangRef] PR22118: Hyphen is allowed in IR identifiers.
Sean Silva [Wed, 7 Jan 2015 21:35:14 +0000 (21:35 +0000)]
[LangRef] PR22118: Hyphen is allowed in IR identifiers.

E.g. %-foo and %fo-o.

Thanks to eagle-eyed reporter Tomas Brukner.

llvm-svn: 225400

9 years agoUpdate a comment.
Adrian Prantl [Wed, 7 Jan 2015 21:35:13 +0000 (21:35 +0000)]
Update a comment.

llvm-svn: 225399

9 years agolldb-platform - static link all llvm dependencies
Vince Harron [Wed, 7 Jan 2015 21:35:07 +0000 (21:35 +0000)]
lldb-platform - static link all llvm dependencies

Differential Revision: http://reviews.llvm.org/D6797

lldb-gdbserver statically links all llvm dependencies. This allows
dead stripping code and reduces total binary size.

This change modifies lldb-plaform to static link llvm dependencies
like lldb-gdbserver.

llvm-svn: 225398

9 years agoLinker: Don't use MDNode::replaceOperandWith()
Duncan P. N. Exon Smith [Wed, 7 Jan 2015 21:32:27 +0000 (21:32 +0000)]
Linker: Don't use MDNode::replaceOperandWith()

`MDNode::replaceOperandWith()` changes all instances of metadata.  Stop
using it when linking module flags, since (due to uniquing) the flag
values could be used by other metadata.

Instead, use new API `NamedMDNode::setOperand()` to update the reference
directly.

llvm-svn: 225397

9 years agotodo: Remove some redundant topics
Tobias Grosser [Wed, 7 Jan 2015 21:28:44 +0000 (21:28 +0000)]
todo: Remove some redundant topics

llvm-svn: 225395

9 years agoTest commit to check the new git mirror.
Chandler Carruth [Wed, 7 Jan 2015 21:28:10 +0000 (21:28 +0000)]
Test commit to check the new git mirror.

llvm-svn: 225394

9 years agoXFAIL several MCJIT EH tests under ASan and MSan bootstrap.
Alexey Samsonov [Wed, 7 Jan 2015 21:27:26 +0000 (21:27 +0000)]
XFAIL several MCJIT EH tests under ASan and MSan bootstrap.

llvm-svn: 225393

9 years ago[CodeGen] Use MVT iterator_ranges in legality loops. NFC intended.
Ahmed Bougacha [Wed, 7 Jan 2015 21:27:10 +0000 (21:27 +0000)]
[CodeGen] Use MVT iterator_ranges in legality loops. NFC intended.

A few loops do trickier things than just iterating on an MVT subset,
so I'll leave them be for now.
Follow-up of r225387.

llvm-svn: 225392

9 years agowww: Make sure the main content pane does not overlap with the menu
Tobias Grosser [Wed, 7 Jan 2015 21:21:55 +0000 (21:21 +0000)]
www: Make sure the main content pane does not overlap with the menu

llvm-svn: 225391

9 years agotodo: Adding native OpenSCoP support to Polly does not seem desirable
Tobias Grosser [Wed, 7 Jan 2015 21:18:35 +0000 (21:18 +0000)]
todo: Adding native OpenSCoP support to Polly does not seem desirable

This would add another library dependency to Polly. In many cases the
JSCoP interface we have should be enough and an external JSCoP <> OpenSCoP
converter could be written. We can reconsider this if new use cases show up.

llvm-svn: 225390

9 years agoHandle OpaqueValueExprs more intelligently in the TransformTypos tree
Kaelyn Takata [Wed, 7 Jan 2015 21:16:39 +0000 (21:16 +0000)]
Handle OpaqueValueExprs more intelligently in the TransformTypos tree
transform.

Also diagnose typos in the initializer of an invalid C++ declaration.
Both issues were hit using the same line of test code, depending on
whether the code was treated as C or C++.

Fixes PR22092.

llvm-svn: 225389

9 years agoAdd updated TODO list
Tobias Grosser [Wed, 7 Jan 2015 21:16:33 +0000 (21:16 +0000)]
Add updated TODO list

llvm-svn: 225388

9 years ago[CodeGen] Add iterator_range for the MVT::SimpleValueType enum.
Ahmed Bougacha [Wed, 7 Jan 2015 21:15:38 +0000 (21:15 +0000)]
[CodeGen] Add iterator_range for the MVT::SimpleValueType enum.

This commit adds a simple iterator over that enum, and a few
functions to create iterator ranges over the most common types.

Differential Revision: http://reviews.llvm.org/D6537

llvm-svn: 225387

9 years agoFix uninitialized memory read in llvm-dsymutil for the second time.
Alexey Samsonov [Wed, 7 Jan 2015 21:13:30 +0000 (21:13 +0000)]
Fix uninitialized memory read in llvm-dsymutil for the second time.

This was already fixed by r224481, but apparently was accidentally
reverted in r225207.

llvm-svn: 225386

9 years agoAdd a test that would have found the issue in r224935.
Rafael Espindola [Wed, 7 Jan 2015 21:10:25 +0000 (21:10 +0000)]
Add a test that would have found the issue in r224935.

llvm-svn: 225385

9 years ago[git] Mark the llgo directory in the LLVM gitignore.
Chandler Carruth [Wed, 7 Jan 2015 21:08:54 +0000 (21:08 +0000)]
[git] Mark the llgo directory in the LLVM gitignore.

llvm-svn: 225384

9 years agoSlightly refactor things for llvm-objdump and the -macho option so it can be used...
Kevin Enderby [Wed, 7 Jan 2015 21:02:18 +0000 (21:02 +0000)]
Slightly refactor things for llvm-objdump and the -macho option so it can be used with
options other than just -disassemble so that universal files can be used with other
options combined with -arch options.

No functional change to existing options and use.  One test case added for the
additional functionality with a universal file an a -arch option.

llvm-svn: 225383

9 years agoR600/SI: Remove VReg_32 register class
Tom Stellard [Wed, 7 Jan 2015 20:59:25 +0000 (20:59 +0000)]
R600/SI: Remove VReg_32 register class

Use VGPR_32 register class instead.  These two register classes were
identical and having separate classes was causing
SIInstrInfo::isLegalOperands() to be overly conservative in some cases.

This change is necessary to prevent future paches from missing a folding
opportunity in fneg-fabs.ll.

llvm-svn: 225382

9 years agoAdd tests to check the typedefs from the result of std::owner_less
Marshall Clow [Wed, 7 Jan 2015 20:54:51 +0000 (20:54 +0000)]
Add tests to check the typedefs from the result of std::owner_less

llvm-svn: 225381

9 years agoMore FMA folding opportunities.
Olivier Sallenave [Wed, 7 Jan 2015 20:54:17 +0000 (20:54 +0000)]
More FMA folding opportunities.

llvm-svn: 225380

9 years agoReapply: Teach SROA how to update debug info for fragmented variables.
Adrian Prantl [Wed, 7 Jan 2015 20:52:22 +0000 (20:52 +0000)]
Reapply: Teach SROA how to update debug info for fragmented variables.

The two buildbot failures were addressed in LLVM r225378 and CFE r225359.

This rapplies commit 225272 without modifications.

llvm-svn: 225379

9 years agoDebug info: Allow aggregate types to be described by constants.
Adrian Prantl [Wed, 7 Jan 2015 20:48:58 +0000 (20:48 +0000)]
Debug info: Allow aggregate types to be described by constants.

llvm-svn: 225378

9 years ago[Hexagon] Fix 225372 USR register is not fully complete. Removing Uses = [USR] maint...
Colin LeMahieu [Wed, 7 Jan 2015 20:43:38 +0000 (20:43 +0000)]
[Hexagon] Fix 225372 USR register is not fully complete.  Removing Uses = [USR] maintains existing functionality to old instructions without encodings.

llvm-svn: 225377

9 years agoMissed one comparison test in r225375
Marshall Clow [Wed, 7 Jan 2015 20:40:28 +0000 (20:40 +0000)]
Missed one comparison test in r225375

llvm-svn: 225376

9 years agoIn C++03, a bunch of the arithmetic/logical/comparison functors (such as add/equal_to...
Marshall Clow [Wed, 7 Jan 2015 20:31:06 +0000 (20:31 +0000)]
In C++03, a bunch of the arithmetic/logical/comparison functors (such as add/equal_to/logical_or) were defined as deriving from binary_funtion. That restriction was removed in C++11, but the tests still check for this. Change the test to look for the embedded types first_argument/second_argument/result_type. No change to the library, just more standards-compliant tests. Thanks to STL @ Microsoft for the suggestion.

llvm-svn: 225375

9 years ago[Hexagon] Adding floating point classification and creation.
Colin LeMahieu [Wed, 7 Jan 2015 20:28:57 +0000 (20:28 +0000)]
[Hexagon] Adding floating point classification and creation.

llvm-svn: 225374

9 years agoR600/SI: Add a V_MOV_B64 pseudo instruction
Tom Stellard [Wed, 7 Jan 2015 20:27:25 +0000 (20:27 +0000)]
R600/SI: Add a V_MOV_B64 pseudo instruction

This is used to simplify the SIFoldOperands pass and make it easier to
fold immediates.

llvm-svn: 225373

9 years ago[Hexagon] Adding encodings for v5 floating point instructions.
Colin LeMahieu [Wed, 7 Jan 2015 20:24:09 +0000 (20:24 +0000)]
[Hexagon] Adding encodings for v5 floating point instructions.

llvm-svn: 225372

9 years ago[Hexagon] Adding encoding for popcount, fastcorner, dword asr with rounding.
Colin LeMahieu [Wed, 7 Jan 2015 20:07:28 +0000 (20:07 +0000)]
[Hexagon] Adding encoding for popcount, fastcorner, dword asr with rounding.

llvm-svn: 225371

9 years agoXFAIL AArch64 UBsan test, just like ARM
Renato Golin [Wed, 7 Jan 2015 20:03:47 +0000 (20:03 +0000)]
XFAIL AArch64 UBsan test, just like ARM

llvm-svn: 225370

9 years agoR600/SI: Teach SIFoldOperands to split 64-bit constants when folding
Tom Stellard [Wed, 7 Jan 2015 19:56:17 +0000 (19:56 +0000)]
R600/SI: Teach SIFoldOperands to split 64-bit constants when folding

This allows folding of sequences like:

s[0:1] = s_mov_b64 4
v_add_i32 v0, s0, v0
v_addc_u32 v1, s1, v1

into

v_add_i32 v0, 4, v0
v_add_i32 v1, 0, v1

llvm-svn: 225369

9 years agoTest commit
Olivier Sallenave [Wed, 7 Jan 2015 19:45:17 +0000 (19:45 +0000)]
Test commit

llvm-svn: 225368

9 years ago[X86] Fix 512->256 typo in comments. NFC.
Ahmed Bougacha [Wed, 7 Jan 2015 19:38:50 +0000 (19:38 +0000)]
[X86] Fix 512->256 typo in comments. NFC.

llvm-svn: 225367

9 years agoAdd a missing file from 225365
Philip Reames [Wed, 7 Jan 2015 19:13:28 +0000 (19:13 +0000)]
Add a missing file from 225365

llvm-svn: 225366

9 years agoIntroduce an example statepoint GC strategy
Philip Reames [Wed, 7 Jan 2015 19:07:50 +0000 (19:07 +0000)]
Introduce an example statepoint GC strategy

This change includes the most basic possible GCStrategy for a GC which is using the statepoint lowering code. At the moment, this GCStrategy doesn't really do much - aside from actually generate correct stackmaps that is - but I went ahead and added a few extra correctness checks as proof of concept. It's mostly here to provide documentation on how to do one, and to provide a point for various optimization legality hooks I'd like to add going forward. (For context, see the TODOs in InstCombine around gc.relocate.)

Most of the validation logic added here as proof of concept will soon move in to the Verifier.  That move is dependent on http://reviews.llvm.org/D6811

There was discussion in the review thread about addrspace(1) being reserved for something.  I'm going to follow up on a seperate llvmdev thread.  If needed, I'll update all the code at once.

Note that I am deliberately not making a GCStrategy required to use gc.statepoints with this change. I want to give folks out of tree - including myself - a chance to migrate. In a week or two, I'll make having a GCStrategy be required for gc.statepoints. To this end, I added the gc tag to one of the test cases but not others.

Differential Revision: http://reviews.llvm.org/D6808

llvm-svn: 225365

9 years agoSlightly simplify the test from r225361.
Nico Weber [Wed, 7 Jan 2015 18:47:51 +0000 (18:47 +0000)]
Slightly simplify the test from r225361.

Shorter and doesn't need -O2 -- but still suboptimal as it's still doing
-emit-obj.  dblaikie says he'll improve this when he'll reland his change
with a fix.

llvm-svn: 225364

9 years agoclang-format: Let Chromium use the Google default for AlignTrailingComments.
Nico Weber [Wed, 7 Jan 2015 18:41:10 +0000 (18:41 +0000)]
clang-format: Let Chromium use the Google default for AlignTrailingComments.

r225141 changed the defaults of AllowShortIfStatementsOnASingleLine and
AlignTrailingComments for Google style and added explicit overrides for
Chromium style to undo these changes.  For AllowShortIfStatementsOnASingleLine
that's good as the Android style guide (which Chromium uses for Java) explicitly
permits single-line ifs. But it's silent on trailing comments, to it makes
sense for Chromium style to just follow Google style.

llvm-svn: 225363

9 years ago[CodeGen] Add MVT::FIRST_VALUETYPE to avoid explicit 0. NFC.
Ahmed Bougacha [Wed, 7 Jan 2015 18:39:00 +0000 (18:39 +0000)]
[CodeGen] Add MVT::FIRST_VALUETYPE to avoid explicit 0. NFC.

Many places reference MVT::LAST_VALUETYPE when iterating over all
valid MVTs, but they usually start with 0.
With FIRST_VALUETYPE, we can avoid explicit constants when we really
should be using MVT::SimpleValueType.

llvm-svn: 225362

9 years agoRevert r225085, it caused PR22096.
Nico Weber [Wed, 7 Jan 2015 18:23:08 +0000 (18:23 +0000)]
Revert r225085, it caused PR22096.

PR22096 has several test cases that assert that look fairly different. I'm
adding one of those as an automated test, but when relanding the other cases
should probably be checked as well.

llvm-svn: 225361

9 years agoX86: Allow the stack probe size to be configurable per function
David Majnemer [Wed, 7 Jan 2015 18:14:07 +0000 (18:14 +0000)]
X86: Allow the stack probe size to be configurable per function

LLVM emits stack probes on Windows targets to ensure that the stack is
correctly accessed.  However, the amount of stack allocated before
emitting such a probe is hardcoded to 4096.

It is desirable to have this be configurable so that a function might
opt-out of stack probes.  Our level of granularity is at the function
level instead of, say, the module level to permit proper generation of
code after LTO.

Patch by Andrew H!

N.B.  The inliner needs to be updated to properly consider what happens
after inlining a function with a specific stack-probe-size into another
function with a different stack-probe-size.

llvm-svn: 225360

9 years agoDebug info: pass in the correct size for a pointer to a member function.
Adrian Prantl [Wed, 7 Jan 2015 17:49:30 +0000 (17:49 +0000)]
Debug info: pass in the correct size for a pointer to a member function.
This corrects a bug I introduced in r224781.

llvm-svn: 225359

9 years agoR600/SI: Refactor SIFoldOperands to simplify immediate folding
Tom Stellard [Wed, 7 Jan 2015 17:42:16 +0000 (17:42 +0000)]
R600/SI: Refactor SIFoldOperands to simplify immediate folding

This will make a future patch much less intrusive.

llvm-svn: 225358

9 years ago[X86] Teach FCOPYSIGN lowering to recognize constant magnitudes.
Ahmed Bougacha [Wed, 7 Jan 2015 17:33:03 +0000 (17:33 +0000)]
[X86] Teach FCOPYSIGN lowering to recognize constant magnitudes.

For code like:
    float foo(float x) { return copysign(1.0, x); }
We used to generate:
    andps  <-0.000000e+00,0,0,0>, %xmm0
    movss  <1.000000e+00>, %xmm1
    andps  <nan>, %xmm1
    orps   %xmm0, %xmm1
Basically doing an abs(1.0f) in the two middle instructions.

We now generate:
    andps  <-0.000000e+00,0,0,0>, %xmm0
    orps   <1.000000e+00,0,0,0>, %xmm0

Builds on cleanups r223415, r223542.
rdar://19049548
Differential Revision: http://reviews.llvm.org/D6555

llvm-svn: 225357

9 years agoImprovements to emacs packages for llvm and tablegen mode.
Rafael Espindola [Wed, 7 Jan 2015 15:52:51 +0000 (15:52 +0000)]
Improvements to emacs packages for llvm and tablegen mode.

* Both files have valid package headers and footers (you can verify
with M-x checkdoc).
* Fixed style warnings generated by checkdoc.
* Fixed a byte-compiler warning in llvm-mode.el.
* Ensure that the modes are autoloaded, so users do not need to
(require 'llvm-mode) to use them.

Patch by Wilfred Hughes.

llvm-svn: 225356

9 years agoReverting r225319; since there is a folder named Examples, attempting to add a target...
Aaron Ballman [Wed, 7 Jan 2015 14:47:12 +0000 (14:47 +0000)]
Reverting r225319; since there is a folder named Examples, attempting to add a target of the same name causes problems for IDEs like Visual Studio.

llvm-svn: 225355

9 years agoManually specify the folder that Kaleidescope should reside in for CMake-produced...
Aaron Ballman [Wed, 7 Jan 2015 14:26:07 +0000 (14:26 +0000)]
Manually specify the folder that Kaleidescope should reside in for CMake-produced solutions that care about such things (like MSVC). This takes the Kaleidescope target out of the root solution folder and places it into the Examples folder where it belongs.

llvm-svn: 225354

9 years agoManually specify the folder that llvm-ranlib should reside in for CMake-produced...
Aaron Ballman [Wed, 7 Jan 2015 14:19:15 +0000 (14:19 +0000)]
Manually specify the folder that llvm-ranlib should reside in for CMake-produced solutions that care about such things (like MSVC). This takes llvm-ranlib out of the root solution folder and places it into the Tools folder where it belongs.

llvm-svn: 225353

9 years agoclang-format: Understand single-line comments at the end of blocks.
Daniel Jasper [Wed, 7 Jan 2015 14:00:11 +0000 (14:00 +0000)]
clang-format: Understand single-line comments at the end of blocks.

This prevents clang-format from moving/aligning the comment in the
snippet:
  void f() {
    int i; // some comment
    // some unrelated comment
  }

llvm-svn: 225352

9 years agoNew method SDep::isNormalMemoryOrBarrier() in ScheduleDAGInstrs.cpp.
Jonas Paulsson [Wed, 7 Jan 2015 13:38:29 +0000 (13:38 +0000)]
New method SDep::isNormalMemoryOrBarrier() in ScheduleDAGInstrs.cpp.

Used to iterate over previously added memory dependencies in
adjustChainDeps() and iterateChainSucc().

SDep::isCtrl() was previously used in these places, that also gave
anti and output edges. The code may be worse if these are followed,
because MisNeedChainEdge() will conservatively return true since a
non-memory instruction has no memory operands, and a false chain dep
will be added. It is also unnecessary since all memory accesses of
interest will be reached by memory dependencies, and there is a budget
limit for the number of edges traversed.

This problem was found on an out-of-tree target with enabled alias
analysis. No test case for an in-tree target has been found.

Reviewed by Hal Finkel.

llvm-svn: 225351

9 years agoFix typos in comment and option help texts.
Jonas Paulsson [Wed, 7 Jan 2015 13:20:57 +0000 (13:20 +0000)]
Fix typos in comment and option help texts.

For -enable-aa-sched-mi and -use-tbaa-in-sched-mi.

llvm-svn: 225350

9 years agoclang-format: Fix unary operator detection.
Daniel Jasper [Wed, 7 Jan 2015 12:19:53 +0000 (12:19 +0000)]
clang-format: Fix unary operator detection.

Before:
  ** outparam = 1;

After:
  **outparam = 1;

llvm-svn: 225349

9 years ago[ARM] Add missing Tag_DIV_use tests.
Charlie Turner [Wed, 7 Jan 2015 11:37:40 +0000 (11:37 +0000)]
[ARM] Add missing Tag_DIV_use tests.

llvm-svn: 225348

9 years agoFix regression in r225266.
Asiri Rathnayake [Wed, 7 Jan 2015 11:22:58 +0000 (11:22 +0000)]
Fix regression in r225266.

The change in r225266 was reviewed under D6722. But the commit r225266 has a
typo, causing some MCHammer failures. This patch fixes it.

Change-Id: I573efcff25003af7478ac02548ebbe929fc7f5fd
llvm-svn: 225347

9 years ago[PM] Give slightly less horrible names to the utility pass templates for
Chandler Carruth [Wed, 7 Jan 2015 11:14:51 +0000 (11:14 +0000)]
[PM] Give slightly less horrible names to the utility pass templates for
requiring and invalidating specific analyses. Also make their printed
names match their class names. Writing these out as prose really doesn't
make sense to me any more.

llvm-svn: 225346

9 years ago[X86] Merge a switch statement inside a default case of another switch statement...
Craig Topper [Wed, 7 Jan 2015 08:10:38 +0000 (08:10 +0000)]
[X86] Merge a switch statement inside a default case of another switch statement on the same variable. There was no additional code in the default so this should be no functional change.

llvm-svn: 225345

9 years ago[X86] Don't mark the shift by 1 instructions as isConvertibleToThreeAddress. There...
Craig Topper [Wed, 7 Jan 2015 08:10:36 +0000 (08:10 +0000)]
[X86] Don't mark the shift by 1 instructions as isConvertibleToThreeAddress. There is no handling for them.

llvm-svn: 225344

9 years ago[X86] Remove some unused TYPE enums from the disassembler.
Craig Topper [Wed, 7 Jan 2015 07:47:52 +0000 (07:47 +0000)]
[X86] Remove some unused TYPE enums from the disassembler.

llvm-svn: 225343

9 years agoUse explicit StringRef Type
Tobias Grosser [Wed, 7 Jan 2015 07:43:34 +0000 (07:43 +0000)]
Use explicit StringRef Type

We previously used a Twine here, but as pointed out by David Blaikie
and Mehdi Amini storing a temporary StringRef in a Twine is not a good
idea, as the StringRef will be freed before the Twine is used leaving
a Twine that points to uninitialized memory. We now make it explicit that
we use a StringRef here.

llvm-svn: 225342

9 years agoRevert r225165 and r225169
Karthik Bhat [Wed, 7 Jan 2015 06:34:34 +0000 (06:34 +0000)]
Revert r225165 and r225169
Even thouh gcc produces simialr instructions as Owen pointed out the two patterns aren’t equivalent in the case
where the original subtraction could have caused an overflow.
Reverting the same.

llvm-svn: 225341

9 years agoFix comment typo.
Nico Weber [Wed, 7 Jan 2015 05:25:05 +0000 (05:25 +0000)]
Fix comment typo.

llvm-svn: 225340

9 years agoPE/COFF: teach ARMNT backend about ADDR32NB for exports
Saleem Abdulrasool [Wed, 7 Jan 2015 04:20:26 +0000 (04:20 +0000)]
PE/COFF: teach ARMNT backend about ADDR32NB for exports

This adds the ability to export symbols from a DLL built for ARMNT.  Add this
support first to help work towards adding support for import thunks on Windows
on ARM.  In order to generate the exports, add support for
IMAGE_REL_ARM_ADDR32NB relocations.

llvm-svn: 225339

9 years ago[ADT][SmallVector] Flip an assert comparison to avoid overflows yielding false-negati...
Ahmed Bougacha [Wed, 7 Jan 2015 02:42:01 +0000 (02:42 +0000)]
[ADT][SmallVector] Flip an assert comparison to avoid overflows yielding false-negatives. NFC.

r221973 changed SmallVector::operator[] to use size_t instead of unsigned.

Before that, on 64bit platforms, when a large index (say -1) was passed,
truncating it to unsigned avoided an overflow when computing 'begin() + idx',
and failed the range checking assertion, as expected.
With r221973, idx isn't truncated, so the addition wraps to
'(char*)begin() - 1', and doesn't fire anymore when it should have done so.

This commit changes the comparison to instead compute 'end() - begin()'
(i.e., 'size()'), which avoids potentially overflowing additions, and
correctly triggers the assertion when values such as -1 are passed.
Note that the problem already existed before that revision, on platforms
where sizeof(size_t) == sizeof(unsigned).

llvm-svn: 225338

9 years ago[asan] add flag quarantine_size_mb, deprecate quarantine_size
Kostya Serebryany [Wed, 7 Jan 2015 02:37:52 +0000 (02:37 +0000)]
[asan] add flag quarantine_size_mb, deprecate quarantine_size

llvm-svn: 225337

9 years ago[TSan] Fix Go build.
Alexey Samsonov [Wed, 7 Jan 2015 02:12:41 +0000 (02:12 +0000)]
[TSan] Fix Go build.

llvm-svn: 225336

9 years agoIR: Remove MDNode::getWhenValsUnresolved()
Duncan P. N. Exon Smith [Wed, 7 Jan 2015 02:10:42 +0000 (02:10 +0000)]
IR: Remove MDNode::getWhenValsUnresolved()

Remove dead code.  Use `MDNode::get()` instead.

llvm-svn: 225335

9 years agoRemove invalid TODO
Duncan P. N. Exon Smith [Wed, 7 Jan 2015 02:09:51 +0000 (02:09 +0000)]
Remove invalid TODO

We can't drop support for RAUW entirely in `MDNode`s, since it's
required for graph construction.  This comment was from before I'd done
the math on that (out-of-tree), and never should have been committed.

llvm-svn: 225334

9 years ago[PM] Fix a pretty nasty bug where the new pass manager would invalidate
Chandler Carruth [Wed, 7 Jan 2015 01:58:35 +0000 (01:58 +0000)]
[PM] Fix a pretty nasty bug where the new pass manager would invalidate
passes too many time.

I think this is actually the issue that someone raised with me at the
developer's meeting and in an email, but that we never really got to the
bottom of. Having all the testing utilities made it much easier to dig
down and uncover the core issue.

When a pass manager is running many passes over a single function, we
need it to invalidate the analyses between each run so that they can be
re-computed as needed. We also need to track the intersection of
preserved higher-level analyses across all the passes that we run (for
example, if there is one module analysis which all the function analyses
preserve, we want to track that and propagate it). Unfortunately, this
interacted poorly with any enclosing pass adaptor between two IR units.
It would see the intersection of preserved analyses, and need to
invalidate any other analyses, but some of the un-preserved analyses
might have already been invalidated *and recomputed*! We would fail to
propagate the fact that the analysis had already been invalidated.

The solution to this struck me as really strange at first, but the more
I thought about it, the more natural it seemed. After a nice discussion
with Duncan about it on IRC, it seemed even nicer. The idea is that
invalidating an analysis *causes* it to be preserved! Preserving the
lack of result is trivial. If it is recomputed, great. Until something
*else* invalidates it again, we're good.

The consequence of this is that the invalidate methods on the analysis
manager which operate over many passes now consume their
PreservedAnalyses object, update it to "preserve" every analysis pass to
which it delivers an invalidation (regardless of whether the pass
chooses to be removed, or handles the invalidation itself by updating
itself). Then we return this augmented set from the invalidate routine,
letting the pass manager take the result and use the intersection of
*that* across each pass run to compute the final preserved set. This
accounts for all the places where the early invalidation of an analysis
has already "preserved" it for a future run.

I've beefed up the testing and adjusted the assertions to show that we
no longer repeatedly invalidate or compute the analyses across nested
pass managers.

llvm-svn: 225333

9 years agoMake DynamicLoaderPOSIXDYLD::DidAttach to deduce a target executable by pid if no...
Oleksiy Vyalov [Wed, 7 Jan 2015 01:28:37 +0000 (01:28 +0000)]
Make DynamicLoaderPOSIXDYLD::DidAttach to deduce a target executable by pid if no executable hasn't been assigned to a target so far.

http://reviews.llvm.org/D6740

llvm-svn: 225332

9 years agoR600/SI: Add check for amdgcn triple forgotten in r225276.
Tom Stellard [Wed, 7 Jan 2015 01:17:37 +0000 (01:17 +0000)]
R600/SI: Add check for amdgcn triple forgotten in r225276.

llvm-svn: 225331

9 years ago[ELF] Remove {ELF,}GNULinkerScript.
Rui Ueyama [Wed, 7 Jan 2015 01:13:08 +0000 (01:13 +0000)]
[ELF] Remove {ELF,}GNULinkerScript.

Instead of representing a linker script file as an "InputElement",
parse and evaluate scripts in the driver as we see them.

Linker scripts are not regular input files (regular file is one of
object, archive, or shared library file). They are more like
extended command line options. Linker script handling was needlessly
complicated because of that inappropriate abstraction (besides
excessive class hierarchy -- there is no such thing like ELF linker
script but we had two classes there for some reason.)

LinkerScript was one of a few remaining InputElement subclasses
that can be expanded to multiple files. With this patch, we are one
step closer to retire InputElement.

http://reviews.llvm.org/D6648

llvm-svn: 225330

9 years agoAnalysis: Reformulate WillNotOverflowUnsignedAdd for reusability
David Majnemer [Wed, 7 Jan 2015 00:39:50 +0000 (00:39 +0000)]
Analysis: Reformulate WillNotOverflowUnsignedAdd for reusability

WillNotOverflowUnsignedAdd's smarts will live in ValueTracking as
computeOverflowForUnsignedAdd.  It now returns a tri-state result:
never overflows, always overflows and sometimes overflows.

llvm-svn: 225329

9 years agoInstCombine: Just a small tidy-up
David Majnemer [Wed, 7 Jan 2015 00:39:42 +0000 (00:39 +0000)]
InstCombine: Just a small tidy-up

llvm-svn: 225328

9 years ago[Sanitizer] Change the runtime flag representation.
Alexey Samsonov [Wed, 7 Jan 2015 00:38:00 +0000 (00:38 +0000)]
[Sanitizer] Change the runtime flag representation.

This mirrors r225239 to all the rest sanitizers:
ASan, DFSan, LSan, MSan, TSan, UBSan.

Now the runtime flag type, name, default value and
description is located in the single place in the
.inc file.

llvm-svn: 225327

9 years agoDo not use a const Twine here
Tobias Grosser [Wed, 7 Jan 2015 00:30:01 +0000 (00:30 +0000)]
Do not use a const Twine here

This has caused segfaults when using Polly in the context of Julia, that are
not reproducible on my machine in 'make check-polly'.

llvm-svn: 225326

9 years ago[PowerPC] Transform a README.txt entry into a FIXME
Hal Finkel [Wed, 7 Jan 2015 00:15:29 +0000 (00:15 +0000)]
[PowerPC] Transform a README.txt entry into a FIXME

Remove the README.txt entry regarding register allocation of CR logical ops,
and replace it with a FIXME in PPCInstrInfo.td. The text in the README.txt was
not really accurate, and thanks goes to Pat Haugen (and Bill Schmidt) from IBM
for clarifying what was intended and highlighting the relevant text in the ISA
specification.

llvm-svn: 225325

9 years agoFix grammar-o in comment.
Nico Weber [Tue, 6 Jan 2015 23:54:59 +0000 (23:54 +0000)]
Fix grammar-o in comment.

llvm-svn: 225324

9 years ago[asan] add a flag soft_rss_limit_mb
Kostya Serebryany [Tue, 6 Jan 2015 23:53:32 +0000 (23:53 +0000)]
[asan] add a flag soft_rss_limit_mb

llvm-svn: 225323

9 years agoSuppress clang warnings in a codegen test.
Rafael Espindola [Tue, 6 Jan 2015 23:53:13 +0000 (23:53 +0000)]
Suppress clang warnings in a codegen test.

This makes the output of FileCheck way easier to read since this test hits
many warnings.

llvm-svn: 225322

9 years agocmake: Fix 'examples' target after r225319
Duncan P. N. Exon Smith [Tue, 6 Jan 2015 23:52:35 +0000 (23:52 +0000)]
cmake: Fix 'examples' target after r225319

Add the missing `DEPENDS` keyword.  r225319 did almost the right thing
(I didn't notice the problem with it because `Kaleidoscope-Ch8` wasn't
building at all).

llvm-svn: 225321

9 years agoKaleidoscope: Value => Metadata
Duncan P. N. Exon Smith [Tue, 6 Jan 2015 23:48:22 +0000 (23:48 +0000)]
Kaleidoscope: Value => Metadata

llvm-svn: 225320

9 years agocmake: Add 'examples' target
Duncan P. N. Exon Smith [Tue, 6 Jan 2015 23:42:49 +0000 (23:42 +0000)]
cmake: Add 'examples' target

llvm-svn: 225319

9 years agocmake: Add Kaleidoscope target
Duncan P. N. Exon Smith [Tue, 6 Jan 2015 23:39:37 +0000 (23:39 +0000)]
cmake: Add Kaleidoscope target

llvm-svn: 225318

9 years agoAdds UriParser::Parse and unit tests
Vince Harron [Tue, 6 Jan 2015 23:38:24 +0000 (23:38 +0000)]
Adds UriParser::Parse and unit tests

This can be used to parse URIs passed to 'platform connect'

Differential Revision: http://reviews.llvm.org/D6858

llvm-svn: 225317

9 years agoFix needed for the new terminal test I previously checked in. It was crashing due...
Greg Clayton [Tue, 6 Jan 2015 23:33:34 +0000 (23:33 +0000)]
Fix needed for the new terminal test I previously checked in. It was crashing due to a NULL dereference.

llvm-svn: 225316

9 years agoAdd a subdirectory in CMake for Chapter 8.
Eric Christopher [Tue, 6 Jan 2015 23:23:24 +0000 (23:23 +0000)]
Add a subdirectory in CMake for Chapter 8.

llvm-svn: 225315

9 years agoAdd __builtin_amdgpu_class
Matt Arsenault [Tue, 6 Jan 2015 23:14:57 +0000 (23:14 +0000)]
Add __builtin_amdgpu_class

llvm-svn: 225314

9 years agoConvert CoreInputGraph.
Rui Ueyama [Tue, 6 Jan 2015 23:06:49 +0000 (23:06 +0000)]
Convert CoreInputGraph.

This is a part of InputGraph cleanup to represent input files as a flat
list of Files (and some meta-nodes for group etc.)

We cannot achieve that goal in one gigantic patch, so I split the task
into small steps as shown below.

(Recap the progress so far: Currently InputGraph contains a list of
InputElements. Each InputElement contain one File (that used to have
multiple Files, but I eliminated that use case in r223867). Files are
currently instantiated in Driver::link(), but I already made a change
to separate file parsing from object instantiation (r224102), so we
can safely instantiate Files when we need them, instead of wrapping
a file with the wrapper class (FileNode class). InputGraph used to
act like a generator class by interpreting groups by itself, but it's
now just a container of a list of InputElements (r223867).)

1. Instantiate Files in the driver and wrap them with WrapperNode.
WrapperNode is a temporary class that allows us to instantiate Files
in the driver while keep using the current InputGraph data structure.

This patch demonstrates how this step 1 looks like, using Core driver
as an example.

2. Do the same thing for the other drivers.

When step 2 is done, an InputGraph consists of GroupEnd objects or
WrapperNodes each of which contains one File. Other types of
FileNode subclasses are removed.

3. Replace InputGraph with std::vector<std::unique_ptr<InputElement>>.
InputGraph is already just a container of list of InputElements,
so this step removes that needless class.

4. Remove WrapperNode.

We need some code cleanup between each step, because many classes
do a bit odd things (e.g. InputGraph::getGroupSize()). I'll straight
things up as I need to.

llvm-svn: 225313

9 years ago[PowerPC] Add support for -mcmpb
Hal Finkel [Tue, 6 Jan 2015 23:06:41 +0000 (23:06 +0000)]
[PowerPC] Add support for -mcmpb

In r225106, support for the CMPB instruction was added to the PowerPC backend.
This adds the associated GCC-compatible feature flag.

llvm-svn: 225312

9 years agoRevert r224935 "Refactor duplicated code. No intended functionality change."
Lang Hames [Tue, 6 Jan 2015 23:04:36 +0000 (23:04 +0000)]
Revert r224935 "Refactor duplicated code. No intended functionality change."

This is affecting the behavior of some ObjC++ / AArch64 test cases on Darwin.
Reverting to get the bots green while I track down the source of the changed
behavior.

llvm-svn: 225311

9 years agoR600/SI: Add combine for isinfinite pattern
Matt Arsenault [Tue, 6 Jan 2015 23:00:46 +0000 (23:00 +0000)]
R600/SI: Add combine for isinfinite pattern

llvm-svn: 225310

9 years agoAdd isNegative helper to ConstantFPSDNode
Matt Arsenault [Tue, 6 Jan 2015 23:00:44 +0000 (23:00 +0000)]
Add isNegative helper to ConstantFPSDNode

llvm-svn: 225309

9 years agoAdd isInfinity helper to ConstantFPSDNode
Matt Arsenault [Tue, 6 Jan 2015 23:00:43 +0000 (23:00 +0000)]
Add isInfinity helper to ConstantFPSDNode

llvm-svn: 225308

9 years agoR600/SI: Pattern match isinf to v_cmp_class instructions
Matt Arsenault [Tue, 6 Jan 2015 23:00:41 +0000 (23:00 +0000)]
R600/SI: Pattern match isinf to v_cmp_class instructions

llvm-svn: 225307

9 years agoR600/SI: Add basic DAG combines for fp_class
Matt Arsenault [Tue, 6 Jan 2015 23:00:39 +0000 (23:00 +0000)]
R600/SI: Add basic DAG combines for fp_class

llvm-svn: 225306

9 years agoR600/SI: Add class intrinsic
Matt Arsenault [Tue, 6 Jan 2015 23:00:37 +0000 (23:00 +0000)]
R600/SI: Add class intrinsic

llvm-svn: 225305

9 years agoFix using wrong intrinsic in test
Matt Arsenault [Tue, 6 Jan 2015 23:00:33 +0000 (23:00 +0000)]
Fix using wrong intrinsic in test

This is a leftover from renaming the intrinsic.
It's surprising the unknown llvm. intrinsic wasn't rejected.

llvm-svn: 225304

9 years agoUpdate for .ll syntax change.
Rafael Espindola [Tue, 6 Jan 2015 22:55:40 +0000 (22:55 +0000)]
Update for .ll syntax change.

llvm-svn: 225303

9 years agoChange the .ll syntax for comdats and add a syntactic sugar.
Rafael Espindola [Tue, 6 Jan 2015 22:55:16 +0000 (22:55 +0000)]
Change the .ll syntax for comdats and add a syntactic sugar.

In order to make comdats always explicit in the IR, we decided to make
the syntax a bit more compact for the case of a GlobalObject in a
comdat with the same name.

Just dropping the $name causes problems for

@foo = globabl i32 0, comdat
$bar = comdat ...

and

declare void @foo() comdat
$bar = comdat ...

So the syntax is changed to

@g1 = globabl i32 0, comdat($c1)
@g2 = globabl i32 0, comdat

and

declare void @foo() comdat($c1)
declare void @foo() comdat

llvm-svn: 225302

9 years ago[PowerPC] Reuse a load operand in int->fp conversions
Hal Finkel [Tue, 6 Jan 2015 22:31:02 +0000 (22:31 +0000)]
[PowerPC] Reuse a load operand in int->fp conversions

int->fp conversions on PPC must be done through memory loads and stores. On a
modern core, this process begins by storing the int value to memory, then
loading it using a (sometimes special) FP load instruction. Unfortunately, we
would do this even when the value to be converted was itself a load, and we can
just use that same memory location instead of copying it to another first.
There is a slight complication when handling int_to_fp(fp_to_int(x)) pairs,
because the fp_to_int operand has not been lowered when the int_to_fp is being
lowered. We handle this specially by invoking fp_to_int's lowering logic
(partially) and getting the necessary memory location (some trivial refactoring
was done to make this possible).

This is all somewhat ugly, and it would be nice if some later CodeGen stage
could just clean this stuff up, but because doing so would involve modifying
target-specific nodes (or instructions), it is not immediately clear how that
would work.

Also, remove a related entry from the README.txt for which we now generate
reasonable code.

llvm-svn: 225301