platform/upstream/llvm.git
10 years agoRemove caching of the target machine and initialization of the
Eric Christopher [Thu, 3 Jul 2014 22:24:49 +0000 (22:24 +0000)]
Remove caching of the target machine and initialization of the
subtarget from ARMISelDAGtoDAG. The former is unnecessary and the
latter is initialized on each runOnMachineFunction.

llvm-svn: 212297

10 years ago[CostModel][x86] Improved cost model for alternate shuffles.
Andrea Di Biagio [Thu, 3 Jul 2014 22:24:18 +0000 (22:24 +0000)]
[CostModel][x86] Improved cost model for alternate shuffles.

This patch:
 1) Improves the cost model for x86 alternate shuffles (originally
added at revision 211339);
 2) Teaches the Cost Model Analysis pass how to analyze alternate shuffles.

Alternate shuffles are a special kind of blend; on x86, we can often
easily lowered alternate shuffled into single blend
instruction (depending on the subtarget features).

The existing cost model didn't take into account subtarget features.
Also, it had a couple of "dead" entries for vector types that are never
legal (example: on x86 types v2i32 and v2f32 are not legal; those are
always either promoted or widened to 128-bit vector types).

The new x86 cost model takes into account what target features we have
before returning the shuffle cost (i.e. the number of instructions
after the blend is lowered/expanded).

This patch also teaches the Cost Model Analysis how to identify and analyze
alternate shuffles (i.e. 'SK_Alternate' shufflevector instructions):
 - added function 'isAlternateVectorMask';
 - added some logic to check if an instruction is a alternate shuffle and, in
   case, call the target specific TTI to get the corresponding shuffle cost;
 - added a test to verify the cost model analysis on alternate shuffles.

llvm-svn: 212296

10 years agoAdd the -just-symbol-name (aka -j) flag to llvm-nm to just print the
Kevin Enderby [Thu, 3 Jul 2014 21:51:07 +0000 (21:51 +0000)]
Add the -just-symbol-name (aka -j) flag to llvm-nm to just print the
symbol’s name.  On darwin the -j flag is used (often in combinations
with other flags) to produce a complete list of symbol names which
than can then be reorder and used with ld(1)’s -order_file.

llvm-svn: 212294

10 years ago[X86] Add ISel patterns to select 'f32_to_f16' and 'f16_to_f32' dag nodes.
Andrea Di Biagio [Thu, 3 Jul 2014 21:51:06 +0000 (21:51 +0000)]
[X86] Add ISel patterns to select 'f32_to_f16' and 'f16_to_f32' dag nodes.

This patch adds tablegen patterns to select F16C float-to-half-float
conversion instructions from 'f32_to_f16' and 'f16_to_f32' dag nodes.

If the target doesn't have F16C, then 'f32_to_f16' and 'f16_to_f32'
are expanded into library calls.

llvm-svn: 212293

10 years agoExpand the note about llvm-ar now that inline asm works.
Rafael Espindola [Thu, 3 Jul 2014 21:34:25 +0000 (21:34 +0000)]
Expand the note about llvm-ar now that inline asm works.

llvm-svn: 212292

10 years agoMake a small crash preventing change.
Fariborz Jahanian [Thu, 3 Jul 2014 21:06:20 +0000 (21:06 +0000)]
Make a small crash preventing change.

llvm-svn: 212291

10 years agoAdds the notion of an OptionValidator.
Zachary Turner [Thu, 3 Jul 2014 20:34:18 +0000 (20:34 +0000)]
Adds the notion of an OptionValidator.

The purpose of the OptionValidator is to determine, based on some
arbitrary set of conditions, whether or not a command option is
valid for a given debugger state.  An example of this might be
to selectively disable or enable certain command options that
don't apply to a particular platform.

This patch contains no functional change, and does not actually
make use of an OptionValidator for any purpose yet.  A follow-up
patch will begin to add the logic and users of OptionValidator.

Reviewed by: Greg Clayton, Jim Ingham

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

llvm-svn: 212290

10 years agoMove test since it now depends on the x86 backend.
Rafael Espindola [Thu, 3 Jul 2014 20:26:21 +0000 (20:26 +0000)]
Move test since it now depends on the x86 backend.

llvm-svn: 212289

10 years agoLTO depends on Object now.
Rafael Espindola [Thu, 3 Jul 2014 20:19:03 +0000 (20:19 +0000)]
LTO depends on Object now.

Fixes the build with only the ARM backend enabled. For some reason some
other backend was pulling Object and this went unnoticed.

llvm-svn: 212288

10 years agoAdd support for inline asm symbols in llvm-ar.
Rafael Espindola [Thu, 3 Jul 2014 19:40:08 +0000 (19:40 +0000)]
Add support for inline asm symbols in llvm-ar.

This should allow llvm-ar to be used instead of gnu ar + plugin in a LTO
build. I will add a release note about it once I finish a LTO bootstrap with it.

llvm-svn: 212287

10 years agoAdd a cmake build system.
Dan Albert [Thu, 3 Jul 2014 19:35:48 +0000 (19:35 +0000)]
Add a cmake build system.

Will add support for tests with lit in a later patch.
This does not yet support building the unwinder in src/Unwind.

llvm-svn: 212286

10 years agoRestore global static array in test case
Gerolf Hoflehner [Thu, 3 Jul 2014 19:30:33 +0000 (19:30 +0000)]
Restore global static array in test case

llvm-svn: 212285

10 years agoRun interprocedural const prop before global optimizer
Gerolf Hoflehner [Thu, 3 Jul 2014 19:28:15 +0000 (19:28 +0000)]
Run interprocedural const prop before global optimizer

Exposes more constant globals that can be removed by
the global optimizer. A specific example is the removal
of the static global block address array in
clang/test/CodeGen/indirect-goto.c. This change impacts only
lower optimization levels. With LTO interprocedural
const prop runs already before global opt.

llvm-svn: 212284

10 years agofix configure+make build
Rafael Espindola [Thu, 3 Jul 2014 19:09:53 +0000 (19:09 +0000)]
fix configure+make build

llvm-svn: 212283

10 years agoAdd support for inline asm symbols to IRObjectFile.
Rafael Espindola [Thu, 3 Jul 2014 18:59:23 +0000 (18:59 +0000)]
Add support for inline asm symbols to IRObjectFile.

This also enables it in llvm-nm so that it can be tested.

llvm-svn: 212282

10 years agoThe RTTI fallback is no more. Remove outdated diagnostic.
Benjamin Kramer [Thu, 3 Jul 2014 18:43:26 +0000 (18:43 +0000)]
The RTTI fallback is no more. Remove outdated diagnostic.

llvm-svn: 212281

10 years agoAdd the -U flag to llvm-nm as an alias to -defined-only
Kevin Enderby [Thu, 3 Jul 2014 18:18:50 +0000 (18:18 +0000)]
Add the -U flag to llvm-nm as an alias to -defined-only
as darwin’s nm(1) uses -U for this functionality.

llvm-svn: 212280

10 years agofixed typo in comment
Sanjay Patel [Thu, 3 Jul 2014 16:17:20 +0000 (16:17 +0000)]
fixed typo in comment

llvm-svn: 212279

10 years agoIR: cleanup Module::dropReferences
David Majnemer [Thu, 3 Jul 2014 16:12:55 +0000 (16:12 +0000)]
IR: cleanup Module::dropReferences

This replaces some old-style loops with range-based for.

llvm-svn: 212278

10 years ago[ARM] Implement ISB memory barrier intrinsic
Yi Kong [Thu, 3 Jul 2014 16:01:25 +0000 (16:01 +0000)]
[ARM] Implement ISB memory barrier intrinsic

Adds support for __builtin_arm_isb. Also corrects DSB and ISB instructions
modelling by adding has-side-effects property.

llvm-svn: 212277

10 years ago[ARM] Implement ISB memory barrier intrinsic
Yi Kong [Thu, 3 Jul 2014 16:00:41 +0000 (16:00 +0000)]
[ARM] Implement ISB memory barrier intrinsic

Adds support for __builtin_arm_isb. Also corrects DSB and ISB instructions
modelling by adding has-side-effects property.

llvm-svn: 212276

10 years agobug fix for PR20020: anti-dependency-breaker causes miscompilation
Sanjay Patel [Thu, 3 Jul 2014 15:19:40 +0000 (15:19 +0000)]
bug fix for PR20020: anti-dependency-breaker causes miscompilation

This patch sets the 'KeepReg' bit for any tied and live registers during the PrescanInstruction() phase of the dependency breaking algorithm. It then checks those 'KeepReg' bits during the ScanInstruction() phase to avoid changing any tied registers. For more details, please see comments in:
http://llvm.org/bugs/show_bug.cgi?id=20020

I added two FIXME comments for code that I think can be removed by using register iterators that include self. I don't want to include those code changes with this patch, however, to keep things as small as possible.

The test case is larger than I'd like, but I don't know how to reduce it further and still produce the failing asm.

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

llvm-svn: 212275

10 years agoFix ppcf128 component access on little-endian systems
Ulrich Weigand [Thu, 3 Jul 2014 15:06:47 +0000 (15:06 +0000)]
Fix ppcf128 component access on little-endian systems

The PowerPC 128-bit long double data type (ppcf128 in LLVM) is in fact a
pair of two doubles, where one is considered the "high" or
more-significant part, and the other is considered the "low" or
less-significant part.  When a ppcf128 value is stored in memory or a
register pair, the high part always comes first, i.e. at the lower
memory address or in the lower-numbered register, and the low part
always comes second.  This is true both on big-endian and little-endian
PowerPC systems.  (Similar to how with a complex number, the real part
always comes first and the imaginary part second, no matter the byte
order of the system.)

This was implemented incorrectly for little-endian systems in LLVM.
This commit fixes three related issues:

- When printing an immediate ppcf128 constant to assembler output
  in emitGlobalConstantFP, emit the high part first on both big-
  and little-endian systems.

- When lowering a ppcf128 type to a pair of f64 types in SelectionDAG
  (which is used e.g. when generating code to load an argument into a
  register pair), use correct low/high part ordering on little-endian
  systems.

- In a related issue, because lowering ppcf128 into a pair of f64 must
  operate differently from lowering an int128 into a pair of i64,
  bitcasts between ppcf128 and int128 must not be optimized away by the
  DAG combiner on little-endian systems, but must effect a word-swap.

Reviewed by Hal Finkel.

llvm-svn: 212274

10 years ago[asan] i686-linux-android support.
Evgeniy Stepanov [Thu, 3 Jul 2014 14:20:56 +0000 (14:20 +0000)]
[asan] i686-linux-android support.

Large part of this change is required due to
  https://code.google.com/p/android/issues/detail?id=61799
dlsym() crashes when symbol resolution fails, which means
we have to limit the interceptor list instead of relying on
runtime detection.

There are minor differencies in system headers, too.

llvm-svn: 212273

10 years ago[asan] Fix unused variable warning.
Evgeniy Stepanov [Thu, 3 Jul 2014 14:14:59 +0000 (14:14 +0000)]
[asan] Fix unused variable warning.

llvm-svn: 212272

10 years agoclang-tidy: Instantiate llvm::Registry<clang::tidy::ClangTidyModule>.
NAKAMURA Takumi [Thu, 3 Jul 2014 14:12:47 +0000 (14:12 +0000)]
clang-tidy: Instantiate llvm::Registry<clang::tidy::ClangTidyModule>.

llvm-svn: 212271

10 years agoclang-modernize: Instantiate llvm::Registry<TransformFactory>.
NAKAMURA Takumi [Thu, 3 Jul 2014 14:12:37 +0000 (14:12 +0000)]
clang-modernize: Instantiate llvm::Registry<TransformFactory>.

llvm-svn: 212270

10 years ago[mach-o]: remove dylib install-name test with a.out
Tim Northover [Thu, 3 Jul 2014 12:50:23 +0000 (12:50 +0000)]
[mach-o]: remove dylib install-name test with a.out

Unfortunately, the creation of (the default) output file, a.out races with all
the other tests in this directory. When the wrong one is read by macho-dump,
the test fails.

llvm-svn: 212269

10 years ago[msan] Stop propagating shadow in blacklisted functions.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:56:30 +0000 (11:56 +0000)]
[msan] Stop propagating shadow in blacklisted functions.

With this change all values passed through blacklisted functions
become fully initialized. Previous behavior was to initialize all
loads in blacklisted functions, but apply normal shadow propagation
logic for all other operation.

This makes blacklist applicable in a wider range of situations.

It also makes code for blacklisted functions a lot shorter, which
works as yet another workaround for PR17409.

llvm-svn: 212268

10 years ago[msan] Add missing attributes in MemorySanitizer tests.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:49:50 +0000 (11:49 +0000)]
[msan] Add missing attributes in MemorySanitizer tests.

llvm-svn: 212267

10 years agoRevert of r212265.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:35:08 +0000 (11:35 +0000)]
Revert of r212265.

llvm-svn: 212266

10 years ago[msan] Stop propagating shadow in blacklisted functions.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:18:48 +0000 (11:18 +0000)]
[msan] Stop propagating shadow in blacklisted functions.

With this change all values passed through blacklisted functions
become fully initialized. Previous behavior was to initialize all
loads in blacklisted functions, but apply normal shadow propagation
logic for all other operation.

This makes blacklist applicable in a wider range of situations.

It also makes code for blacklisted functions a lot shorter, which
works as yet another workaround for PR17409.

llvm-svn: 212265

10 years agoAdd the __qdbl intrinsic to the arm_acle.h header
Renato Golin [Thu, 3 Jul 2014 10:14:52 +0000 (10:14 +0000)]
Add the __qdbl intrinsic to the arm_acle.h header

Patch by: Moritz Roth

llvm-svn: 212264

10 years agoMove the calling of emitTargetMD() later.
Robert Lytton [Thu, 3 Jul 2014 09:30:33 +0000 (09:30 +0000)]
Move the calling of emitTargetMD() later.

Summary:
Because a global created by GetOrCreateLLVMGlobal() is not finalised until later viz:
  extern char a[];
  char f(){ return a[5];}
  char a[10];

Change MangledDeclNames to use a MapVector rather than a DenseMap so that the
Metadata is output in order of original declaration, so to make deterministic
and improve human readablity.

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

llvm-svn: 212263

10 years agorefactor for-loop as range-loop before making changes.
Robert Lytton [Thu, 3 Jul 2014 09:30:29 +0000 (09:30 +0000)]
refactor for-loop as range-loop before making changes.

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

llvm-svn: 212262

10 years agoARMEB: Fix function result return for composite types
Christian Pirker [Thu, 3 Jul 2014 09:28:12 +0000 (09:28 +0000)]
ARMEB: Fix function result return for composite types

Reviewed at http://reviews.llvm.org/D4364

llvm-svn: 212261

10 years ago[Driver][Mips] Check MIPS CPU name provided to the Clang driver.
Simon Atanasyan [Thu, 3 Jul 2014 08:31:23 +0000 (08:31 +0000)]
[Driver][Mips] Check MIPS CPU name provided to the Clang driver.

llvm-svn: 212260

10 years agoMinor stylistic fix in SimplifyCFG (test commit)
Marcello Maggioni [Thu, 3 Jul 2014 08:29:06 +0000 (08:29 +0000)]
Minor stylistic fix in SimplifyCFG (test commit)

llvm-svn: 212259

10 years agoLet llvm/test/CodeGen/X86/lower-bitcast.ll tolerant of win32 calling convention.
NAKAMURA Takumi [Thu, 3 Jul 2014 07:25:00 +0000 (07:25 +0000)]
Let llvm/test/CodeGen/X86/lower-bitcast.ll tolerant of win32 calling convention.

llvm-svn: 212258

10 years ago[x86] Fix the completely broken vector widening legalization of bswap.
Chandler Carruth [Thu, 3 Jul 2014 07:04:38 +0000 (07:04 +0000)]
[x86] Fix the completely broken vector widening legalization of bswap.

This operation was classified as a binary operation in the widening
logic for some reason (clearly, untested). It is in fact a unary
operation. Add a RUN line to a test to exercise this for x86.

Note that again the vector widening strategy doesn't regress anything
and in one case removes a totally unecessary instruction that we
couldn't avoid when promoting the element type.

llvm-svn: 212257

10 years agoMS ABI: Get linkage of RTTI data correct
David Majnemer [Thu, 3 Jul 2014 05:51:27 +0000 (05:51 +0000)]
MS ABI: Get linkage of RTTI data correct

The Itanium rules are not appropriate for the MS ABI.  RTTI data is
_never_ imported and thus is never available_externally.  It is either
internal (if the type's linkage is internal) or linkonce_odr.

This also means that classes which inherit from dllimport'd bases force
their translation unit to duplicate the entirety of the RTTI data of
that base.

Interestingly, the complete object locator can never be referenced by
translation units which import the class.

This fixes PR20106.

llvm-svn: 212256

10 years agoFix compilation errors introduced by host Pipe abstraction
Zachary Turner [Thu, 3 Jul 2014 05:20:28 +0000 (05:20 +0000)]
Fix compilation errors introduced by host Pipe abstraction
on Windows.

llvm-svn: 212255

10 years ago[x86] Fix crashes in lowering bitcast instructions with the widening
Chandler Carruth [Thu, 3 Jul 2014 03:43:47 +0000 (03:43 +0000)]
[x86] Fix crashes in lowering bitcast instructions with the widening
mode.

This also runs the test in that mode which would reproduce the crash.
What I love is that *every single FIXME* in the test is addressed by
switching to widening.

llvm-svn: 212254

10 years agoARM: rename ARM builtins to use __builtin_arm prefix
Saleem Abdulrasool [Thu, 3 Jul 2014 02:43:20 +0000 (02:43 +0000)]
ARM: rename ARM builtins to use __builtin_arm prefix

This corrects SVN r212196's naming change to use the proper prefix of
`__builtin_arm_` instead of `__builtin_`.

Thanks to Yi Kong for pointing out the incorrect naming!

llvm-svn: 212253

10 years ago[aarch64] Add a test that should have been in r212242 but I forgot to
Chandler Carruth [Thu, 3 Jul 2014 02:12:26 +0000 (02:12 +0000)]
[aarch64] Add a test that should have been in r212242 but I forgot to
add it. Sorry about that.

llvm-svn: 212251

10 years agoAdd new lines to debugging information.
Richard Trieu [Thu, 3 Jul 2014 02:11:49 +0000 (02:11 +0000)]
Add new lines to debugging information.

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

llvm-svn: 212250

10 years ago[x86] Based on a long conversation between myself, Jim Grosbach, Hal
Chandler Carruth [Thu, 3 Jul 2014 02:11:29 +0000 (02:11 +0000)]
[x86] Based on a long conversation between myself, Jim Grosbach, Hal
Finkel, Eric Christopher, and a bunch of other people I'm probably
forgetting (sorry), add an option to the x86 backend to widen vectors
during type legalization rather than promote them.

This still would promote vNi1 vectors to get the masks right, but would
widen other vectors. A lot of experiments are piling up right now
showing that widening should probably be the default legalization
strategy outside of vNi1 cases, but it is very hard to test the
rammifications of that and fix bugs in widening-based legalization
without an option that enables it. I'll be checking in tests shortly
that use this option to exercise cases where widening doesn't work well
and hopefully we'll be able to switch fully to this soon.

llvm-svn: 212249

10 years agoInvert the MC -> Object dependency.
Rafael Espindola [Thu, 3 Jul 2014 02:01:39 +0000 (02:01 +0000)]
Invert the MC -> Object dependency.

Now that we have a lib/MC/MCAnalysis, the dependency was there just because
of two helper classes. Move the two over to MC.

This will allow IRObjectFile to parse inline assembly.

llvm-svn: 212248

10 years ago[mach-o] add x86 test case to build hello world. Fix bugs it uncovered.
Nick Kledzik [Thu, 3 Jul 2014 02:01:21 +0000 (02:01 +0000)]
[mach-o] add x86 test case to build hello world.  Fix bugs it uncovered.

llvm-svn: 212247

10 years agoAdd enumerations for additional languages from DWARF spec updates.
Bruce Mitchener [Thu, 3 Jul 2014 00:49:08 +0000 (00:49 +0000)]
Add enumerations for additional languages from DWARF spec updates.

llvm-svn: 212246

10 years agoMake these preprocessor directives match all of the others in the port.
Eric Christopher [Thu, 3 Jul 2014 00:44:31 +0000 (00:44 +0000)]
Make these preprocessor directives match all of the others in the port.

llvm-svn: 212245

10 years agoRemove dead code.
Eric Christopher [Thu, 3 Jul 2014 00:44:28 +0000 (00:44 +0000)]
Remove dead code.

llvm-svn: 212244

10 years agoAddress review feedback for r212238.
Nico Weber [Thu, 3 Jul 2014 00:38:25 +0000 (00:38 +0000)]
Address review feedback for r212238.

Also, forgot to say in the commit message of r212238: Library authors will
see a warning about this issue if they build with -Wsystem-headers.

llvm-svn: 212243

10 years ago[codegen,aarch64] Add a target hook to the code generator to control
Chandler Carruth [Thu, 3 Jul 2014 00:23:43 +0000 (00:23 +0000)]
[codegen,aarch64] Add a target hook to the code generator to control
vector type legalization strategies in a more fine grained manner, and
change the legalization of several v1iN types and v1f32 to be widening
rather than scalarization on AArch64.

This fixes an assertion failure caused by scalarizing nodes like "v1i32
trunc v1i64". As v1i64 is legal it will fail to scalarize v1i32.

This also provides a foundation for other targets to have more granular
control over how vector types are legalized.

Patch by Hao Liu, reviewed by Tim Northover. I'm committing it to allow
some work to start taking place on top of this patch as it adds some
really important hooks to the backend that I'd like to immediately start
using. =]

http://reviews.llvm.org/D4322

llvm-svn: 212242

10 years ago[mach-o] Fix warning on enumeration cases not handled
Nick Kledzik [Thu, 3 Jul 2014 00:13:26 +0000 (00:13 +0000)]
[mach-o] Fix warning on enumeration cases not handled

llvm-svn: 212241

10 years agoMove subtarget dependent features into the subtarget from the target
Eric Christopher [Thu, 3 Jul 2014 00:10:24 +0000 (00:10 +0000)]
Move subtarget dependent features into the subtarget from the target
machine. Includes a fix for a subtarget initialization for
hard floating point on mips16.

llvm-svn: 212240

10 years ago[mach-o] add parsing of x86 relocations
Nick Kledzik [Wed, 2 Jul 2014 23:52:22 +0000 (23:52 +0000)]
[mach-o] add parsing of x86 relocations

llvm-svn: 212239

10 years agoEnable clang to continue to parse libstdc++4.6 and stlport after r210091.
Nico Weber [Wed, 2 Jul 2014 23:51:09 +0000 (23:51 +0000)]
Enable clang to continue to parse libstdc++4.6 and stlport after r210091.

r210091 made initialization checking more strict in c++11 mode. LWG2193 is
about changing standard libraries to still be valid under these new rules,
but older libstdc++ (e.g. libstdc++4.6 in -D_GLIBCXX_DEBUG=1 mode, or stlport)
do not implement that yet.  So fall back to the C++03 semantics for container
classes in system headers below the std namespace.

llvm-svn: 212238

10 years agoUpdate the MSVC compatibilty document for class template parsing
Reid Kleckner [Wed, 2 Jul 2014 23:37:33 +0000 (23:37 +0000)]
Update the MSVC compatibilty document for class template parsing

llvm-svn: 212237

10 years agoSo that we can include frame lowering in the subtarget, remove include
Eric Christopher [Wed, 2 Jul 2014 23:29:55 +0000 (23:29 +0000)]
So that we can include frame lowering in the subtarget, remove include
circular dependency with the subtarget by inlining accessor methods and
outlining a routine.

llvm-svn: 212236

10 years agoAdd the -reverse-sort flag (aka -r) to llvm-nm
Kevin Enderby [Wed, 2 Jul 2014 23:23:58 +0000 (23:23 +0000)]
Add the -reverse-sort flag (aka -r) to llvm-nm
which exists in other Unix nm(1)’s.

llvm-svn: 212235

10 years agoSo that we can include target lowering in the subtarget, remove include
Eric Christopher [Wed, 2 Jul 2014 23:18:40 +0000 (23:18 +0000)]
So that we can include target lowering in the subtarget, remove include
circular dependency with the subtarget by inlining accessor methods and
outlining a routine.

llvm-svn: 212234

10 years agoFix linkage bug that miscompiled variable templates instantiated from similarly named...
Larisse Voufo [Wed, 2 Jul 2014 23:08:34 +0000 (23:08 +0000)]
Fix linkage bug that miscompiled variable templates instantiated from similarly named local types. In essence, this bug ensures that the x<Foo> specialization in function foo() defined as follows differs between two distinct translation units.
    static int &foo() {
       struct Foo { };
       return x<Foo>;
    }

llvm-svn: 212233

10 years agoFix a warning about undeclared call to abort().
Dan Albert [Wed, 2 Jul 2014 22:44:35 +0000 (22:44 +0000)]
Fix a warning about undeclared call to abort().

llvm-svn: 212232

10 years agoUpdate comment and include guard.
Rafael Espindola [Wed, 2 Jul 2014 22:31:51 +0000 (22:31 +0000)]
Update comment and include guard.

I missed these when moving the files.

llvm-svn: 212231

10 years ago[OCaml] Documentation improvements.
Peter Zotov [Wed, 2 Jul 2014 22:17:20 +0000 (22:17 +0000)]
[OCaml] Documentation improvements.

Patch by Julien Sagot

llvm-svn: 212230

10 years agoMore editorial issues in MSVCCompatibility.rst
David Majnemer [Wed, 2 Jul 2014 22:14:34 +0000 (22:14 +0000)]
More editorial issues in MSVCCompatibility.rst

Make the status text for lambdas green.

llvm-svn: 212229

10 years agoFix typos.
Eric Christopher [Wed, 2 Jul 2014 22:05:40 +0000 (22:05 +0000)]
Fix typos.

llvm-svn: 212228

10 years agoFix Typo in MSVCCompatibility.rst
Warren Hunt [Wed, 2 Jul 2014 21:46:03 +0000 (21:46 +0000)]
Fix Typo in MSVCCompatibility.rst
Also removed a sentance that was no longer relevant.

llvm-svn: 212227

10 years agoRevert "DebugInfo: Ensure that all debug location scope chains from instructions...
David Blaikie [Wed, 2 Jul 2014 21:42:28 +0000 (21:42 +0000)]
Revert "DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself."

This reverts commit r212205.

Reverting this again, still seeing crashes when building compiler-rt...
Sorry for the continued noise, not sure why I'm failing to reproduce
this locally.

llvm-svn: 212226

10 years agolldb - problem with some PTRACE_* constants in NativeProcessLinux.cpp file
Todd Fiala [Wed, 2 Jul 2014 21:34:04 +0000 (21:34 +0000)]
lldb - problem with some PTRACE_* constants in NativeProcessLinux.cpp file

See http://reviews.llvm.org/D4366 for details.

Change by Paul Paul Osmialowski

Today this is the only problem that I'm facing trying to cross-compile lldb for AArch64 using Linaro's toolchain.

PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS, PTRACE_SETFPREGS are not defined for AArch64
These things can be defined different ways for other architectures, e.g. for x86_64 Linux, asm/ptrace-abi.h defines them as preprocessor constants while sys/ptrace.h defines them in enum along with corresponding PT_* preprocessor constants
NativeProcessLinux.cpp includes sys/ptrace.h
To avoid accidental redefinition of enums with preprocessor constants, I'm proposing this patch which first checks for PT_* preprocessor constants then checks for PTRACE_* constants then when it still can not find them, it defines preprocessor constants.
Similar approach was already used for PTRACE_GETREGSET and PTRACE_SETREGSET constants; in this case however it was easier, since enum values in sys/ptrace.h and preprocessor constants shared all exactly the same names (e.g. there's no additional PT_GETREGSET name defined).

llvm-svn: 212225

10 years agoMove the data layout and selection dag info from the mips target machine
Eric Christopher [Wed, 2 Jul 2014 21:29:23 +0000 (21:29 +0000)]
Move the data layout and selection dag info from the mips target machine
down to the subtarget.

llvm-svn: 212224

10 years ago[X86] AVX512: Allow writemask argument in vpermt* intrinsics
Adam Nemet [Wed, 2 Jul 2014 21:26:01 +0000 (21:26 +0000)]
[X86] AVX512: Allow writemask argument in vpermt* intrinsics

llvm-svn: 212223

10 years ago[X86] AVX512: Generate Pat<>'s for the vpermt2* intrinsics via multiclass
Adam Nemet [Wed, 2 Jul 2014 21:25:58 +0000 (21:25 +0000)]
[X86] AVX512: Generate Pat<>'s for the vpermt2* intrinsics via multiclass

This new multiclass, avx512_perm_table_3src derives from the current one and
provides the Pat<>.  The next patch will add another Pat<> that uses the
writemask.

Note that I dropped the type annotation from the intrinsic call, i.e.: (v16f32
VR512:$src1) -> R512:$src1.  I think that this should be fine (at least many
intrinsic calls don't provide them) and it greatly reduces the number of
template arguments.

llvm-svn: 212222

10 years ago[X86] AVX512: Add writemask variants for vperm*2*
Adam Nemet [Wed, 2 Jul 2014 21:25:54 +0000 (21:25 +0000)]
[X86] AVX512: Add writemask variants for vperm*2*

This includes assembler and codegen support (see the new tests in
avx512-encodings.s and avx512-shuffle.ll).

<rdar://problem/17492620>

llvm-svn: 212221

10 years agoAdd host layer support for pipes.
Greg Clayton [Wed, 2 Jul 2014 21:10:39 +0000 (21:10 +0000)]
Add host layer support for pipes.

Windows does support pipes, but they do so in a slightly different way. Added a Host layer which abstracts the use of pipes into a new Pipe class that everyone can use.

Windows benefits include:
- Being able to interrupt running processes when IO is directly hooked up
- being able to interrupt long running python scripts
- being able to interrupt anything based on ConnectionFileDescriptor

llvm-svn: 212220

10 years agoFixup typo in MSVCCompatibility.rst
David Majnemer [Wed, 2 Jul 2014 21:09:33 +0000 (21:09 +0000)]
Fixup typo in MSVCCompatibility.rst

llvm-svn: 212219

10 years agoR600: Add a comment that llvm.AMDGPU.trunc is a legacy intrinsic
Tom Stellard [Wed, 2 Jul 2014 20:53:57 +0000 (20:53 +0000)]
R600: Add a comment that llvm.AMDGPU.trunc is a legacy intrinsic

llvm-svn: 212218

10 years agoR600/SI: Use a ComplexPattern for ADDR64 addressing of MUBUF loads
Tom Stellard [Wed, 2 Jul 2014 20:53:56 +0000 (20:53 +0000)]
R600/SI: Use a ComplexPattern for ADDR64 addressing of MUBUF loads

llvm-svn: 212217

10 years agoR600: Promote i64 loads to v2i32
Tom Stellard [Wed, 2 Jul 2014 20:53:54 +0000 (20:53 +0000)]
R600: Promote i64 loads to v2i32

llvm-svn: 212216

10 years agoR600/SI: Adjsut SGPR live ranges before register allocation
Tom Stellard [Wed, 2 Jul 2014 20:53:48 +0000 (20:53 +0000)]
R600/SI: Adjsut SGPR live ranges before register allocation

SGPRs are written by instructions that sometimes will ignore control flow,
which means if you have code like:

if (VGPR0) {
  SGPR0 = S_MOV_B32 0
} else {
  SGPR0 = S_MOV_B32 1
}

The value of SGPR0 will 1 no matter what the condition is.

In order to deal with this situation correctly, we need to view the
program as if it were a single basic block when we calculate the
live ranges for the SGPRs.  They way we actually update the live
range is by iterating over all of the segments in each LiveRange
object and setting the end of each segment equal to the start of
the next segment.  So a live range like:

[3888r,9312r:0)[10032B,10384B:0)  0@3888r

will become:

[3888r,10032B:0)[10032B,10384B:0)  0@3888r

This change will allow us to use SALU instructions within branches.

llvm-svn: 212215

10 years agoR600/SI: Add verifier check for immediates in register operands.
Tom Stellard [Wed, 2 Jul 2014 20:53:44 +0000 (20:53 +0000)]
R600/SI: Add verifier check for immediates in register operands.

llvm-svn: 212214

10 years agoMake LLDB.framework link again on Yosemite.
Greg Clayton [Wed, 2 Jul 2014 20:32:01 +0000 (20:32 +0000)]
Make LLDB.framework link again on Yosemite.

llvm-svn: 212213

10 years agoRemove non-static field initializer to appease MSVC
Alexey Samsonov [Wed, 2 Jul 2014 20:25:42 +0000 (20:25 +0000)]
Remove non-static field initializer to appease MSVC

llvm-svn: 212212

10 years agoXFAIL test on Android (this is a known issue)
Alexey Samsonov [Wed, 2 Jul 2014 20:18:41 +0000 (20:18 +0000)]
XFAIL test on Android (this is a known issue)

llvm-svn: 212211

10 years agoFix configure+make build.
Rafael Espindola [Wed, 2 Jul 2014 20:05:48 +0000 (20:05 +0000)]
Fix configure+make build.

llvm-svn: 212210

10 years agoMove CFG building code to a new lib/MC/MCAnalysis library.
Rafael Espindola [Wed, 2 Jul 2014 19:49:34 +0000 (19:49 +0000)]
Move CFG building code to a new lib/MC/MCAnalysis library.

The new library is 150KB on a Release+Asserts build, so it is quiet a bit of
code that regular users of MC don't need to link with now.

llvm-svn: 212209

10 years agoRemoving Carbon dependency by removing obsolete code.
Jean-Daniel Dupas [Wed, 2 Jul 2014 19:37:25 +0000 (19:37 +0000)]
Removing Carbon dependency by removing obsolete code.
The only part using Carbon is a function in Host.mm used to open a file in Xcode.
That code is broken and it is no longer useful as Xcode supports LLDB natively.

llvm-svn: 212208

10 years agoIf a breakpoint gets deleted, any SBBreakpoints representing that
Jim Ingham [Wed, 2 Jul 2014 18:44:43 +0000 (18:44 +0000)]
If a breakpoint gets deleted, any SBBreakpoints representing that
breakpoint should return false from IsValid.

llvm-svn: 212206

10 years agoDebugInfo: Ensure that all debug location scope chains from instructions within a...
David Blaikie [Wed, 2 Jul 2014 18:32:05 +0000 (18:32 +0000)]
DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself.

Originally committed in r211723, reverted in r211724 due to failure
cases found and fixed (ArgumentPromotion: r211872, Inlining: r212065),
committed again in r212085 and reverted again in r212089 after fixing
some other cases, such as debug info subprogram lists not keeping track
of the function they represent (r212128) and then short-circuiting
things like LiveDebugVariables that build LexicalScopes for functions
that might not have full debug info.

And again, I believe the invariant actually holds for some reasonable
amount of code (but I'll keep an eye on the buildbots and see what
happens... ).

Original commit message:

PR20038: DebugInfo: Inlined call sites where the caller has debug info
but the call itself has no debug location.

This situation does bad things when inlined, so I've fixed Clang not to
produce inlinable call sites without locations when the caller has debug
info (in the one case where I could find that this occurred). This
updates the PR20038 test case to be what clang now produces, and readds
the assertion that had to be removed due to this bug.

I've also beefed up the debug info verifier to help diagnose these
issues in the future, and I hope to add checks to the inliner to just
assert-fail if it encounters this situation. If, in the future, we
decide we have to cope with this situation, the right thing to do is
probably to just remove all the DebugLocs from the inlined instructions.

llvm-svn: 212205

10 years ago[RegAllocGreedy] Provide a subtarget hook to disable the local reassignment
Quentin Colombet [Wed, 2 Jul 2014 18:32:04 +0000 (18:32 +0000)]
[RegAllocGreedy] Provide a subtarget hook to disable the local reassignment
heuristic.
By default, no functionality change.
This is a follow-up of r212099.

This hook provides a finer grain to control the optimization.

<rdar://problem/17444599>

llvm-svn: 212204

10 years agoDon't try to construct debug LexicalScopes hierarchy for functions that do not have...
David Blaikie [Wed, 2 Jul 2014 18:31:35 +0000 (18:31 +0000)]
Don't try to construct debug LexicalScopes hierarchy for functions that do not have top level debug information.

If a function isn't actually in a CU's subprogram list in the debug info
metadata, ignore all the DebugLocs and don't try to build scopes, track
variables, etc.

While this is possibly a minor optimization, it's also a correctness fix
for an incoming patch that will add assertions to LexicalScopes and the
debug info verifier to ensure that all scope chains lead to debug info
for the current function.

Fix up a few test cases that had broken/incomplete debug info that could
violate this constraint.

Add a test case where this occurs by design (inlining a
debug-info-having function in an attribute nodebug function - we want
this to work because /if/ the nodebug function is then inlined into a
debug-info-having function, it should be fine (and will work fine - we
just stitch the scopes up as usual), but should the inlining not happen
we need to not assert fail either).

llvm-svn: 212203

10 years agoConstify the Function pointers in the result of makeSubprogramMap
David Blaikie [Wed, 2 Jul 2014 18:30:05 +0000 (18:30 +0000)]
Constify the Function pointers in the result of makeSubprogramMap

These don't need to be mutable and callers being added soon in CodeGen
won't have access to non-const Module&.

llvm-svn: 212202

10 years agoAArch64: Re-enable AArch64AddressTypePromotion
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 18:17:40 +0000 (18:17 +0000)]
AArch64: Re-enable AArch64AddressTypePromotion

This reverts commits r212189 and r212190.

While this pass was accidentally disabled (until r212073), r205437
slipped in a use of `auto` that should have been `auto&`.

This fixes PR20188.

llvm-svn: 212201

10 years agoAdd missing dependency to macho-dump.
Rui Ueyama [Wed, 2 Jul 2014 18:16:31 +0000 (18:16 +0000)]
Add missing dependency to macho-dump.

r212094 added a few tests that use macho-dump.

llvm-svn: 212200

10 years agoAArch64: Remove unnecessary parens
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 18:14:03 +0000 (18:14 +0000)]
AArch64: Remove unnecessary parens

llvm-svn: 212199

10 years agoDerive run-time conditions for delinearization
Tobias Grosser [Wed, 2 Jul 2014 17:47:48 +0000 (17:47 +0000)]
Derive run-time conditions for delinearization

As our delinearization works optimistically, we need in some cases run-time
checks that verify our optimistic assumptions. A simple example is the
following code:

void foo(long n, long m, long o, double A[n][m][o]) {

  for (long i = 0; i < 100; i++)
    for (long j = 0; j < 150; j++)
      for (long k = 0; k < 200; k++)
        A[i][j][k] = 1.0;
}

After clang linearized the access to A and we delinearized it again to
A[i][j][k] we need to ensure that we do not access the delinearized array
out of bounds (this information is not available in LLVM-IR). Hence, we
need to verify the following constraints at run-time:

CHECK:   Assumed Context:
CHECK:   [o, m] -> {  : m >= 150 and o >= 200 }
llvm-svn: 212198

10 years agoR600: Fix crashes when an illegal type load or store is not handled.
Matt Arsenault [Wed, 2 Jul 2014 17:44:53 +0000 (17:44 +0000)]
R600: Fix crashes when an illegal type load or store is not handled.

I don't think anything hits this now, but will be exposed in future
patches.

llvm-svn: 212197

10 years agoCodeGen: make target builtins support languages
Saleem Abdulrasool [Wed, 2 Jul 2014 17:41:27 +0000 (17:41 +0000)]
CodeGen: make target builtins support languages

This extends the target builtin support to allow language specific annotations
(i.e. LANGBUILTIN).  This is to allow MSVC compatibility whilst retaining the
ability to have EABI targets use a __builtin_ prefix.  This is merely to allow
uniformity in the EABI case where the unprefixed name is provided as an alias in
the header.

llvm-svn: 212196

10 years agoJust adding a getHalfTy method to IRBuilder for completeness.
Puyan Lotfi [Wed, 2 Jul 2014 17:33:00 +0000 (17:33 +0000)]
Just adding a getHalfTy method to IRBuilder for completeness.

llvm-svn: 212195