platform/upstream/llvm.git
10 years ago[cmake] In add_llvm_loadable_module, don't clobber existing LINK_FLAGS on OS X.
Nico Weber [Sun, 29 Dec 2013 23:04:48 +0000 (23:04 +0000)]
[cmake] In add_llvm_loadable_module, don't clobber existing LINK_FLAGS on OS X.

Also add leading spaces to the LINK_FLAGS setters, since that's what the cmake
folks recommend: http://www.cmake.org/pipermail/cmake/2012-October/052399.html

llvm-svn: 198182

10 years agoFix a couple of memory leaks.
Jean-Daniel Dupas [Sun, 29 Dec 2013 20:18:15 +0000 (20:18 +0000)]
Fix a couple of memory leaks.

llvm-svn: 198178

10 years agoStop leaking MCRegisterInfo.
Jean-Daniel Dupas [Sun, 29 Dec 2013 20:17:26 +0000 (20:17 +0000)]
Stop leaking MCRegisterInfo.

llvm-svn: 198177

10 years agoUse LLVM_EXPORTED_SYMBOL_FILE in libclang's cmake build.
Nico Weber [Sun, 29 Dec 2013 19:31:48 +0000 (19:31 +0000)]
Use LLVM_EXPORTED_SYMBOL_FILE in libclang's cmake build.

Now the exports file should have an effect on non-darwin too.

llvm-svn: 198176

10 years agoFixing a compile error that recently started happening for me in MSVC 2013. CFGTermin...
Aaron Ballman [Sun, 29 Dec 2013 18:59:54 +0000 (18:59 +0000)]
Fixing a compile error that recently started happening for me in MSVC 2013. CFGTerminator has an explicit conversion to bool operator that we can make use of instead of using == 0.

llvm-svn: 198175

10 years agoARM IAS: fix after r198172
Saleem Abdulrasool [Sun, 29 Dec 2013 18:53:16 +0000 (18:53 +0000)]
ARM IAS: fix after r198172

The DPR and SPR register lists are also register lists.  Furthermore, the
registers need not be checked individually since the register type can be
checked via the list kind.  Use that to simplify the logic and fix the incorrect
assertion.

llvm-svn: 198174

10 years agoARM: provide VFP aliases for pre-V6 mnemonics
Saleem Abdulrasool [Sun, 29 Dec 2013 17:58:35 +0000 (17:58 +0000)]
ARM: provide VFP aliases for pre-V6 mnemonics

In order to provide compatibility with the GNU assembler, provide aliases for
pre-UAL mnemonics for floating point operations.

llvm-svn: 198172

10 years agoARM: fix a few typos in comments
Saleem Abdulrasool [Sun, 29 Dec 2013 17:58:31 +0000 (17:58 +0000)]
ARM: fix a few typos in comments

llvm-svn: 198171

10 years agoARM: fix typo in VFP instruction definition
Saleem Abdulrasool [Sun, 29 Dec 2013 17:58:27 +0000 (17:58 +0000)]
ARM: fix typo in VFP instruction definition

The vstm family of VFP instructions belong to the VFP store itinerary class, not
the VFP load itinerary class.

llvm-svn: 198170

10 years agoFix mis-merging in AddLLVM.cmake, take #2. LINK.EXE's options had been broken. Sorry...
NAKAMURA Takumi [Sun, 29 Dec 2013 16:50:15 +0000 (16:50 +0000)]
Fix mis-merging in AddLLVM.cmake, take #2. LINK.EXE's options had been broken. Sorry again.

llvm-svn: 198169

10 years agoPass -fno-builtin flag to clang to silence warnings
Aaron Watry [Sun, 29 Dec 2013 16:39:55 +0000 (16:39 +0000)]
Pass -fno-builtin flag to clang to silence warnings

Reviewed-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 198168

10 years agoFix build with LLVM 3.5
Aaron Watry [Sun, 29 Dec 2013 16:39:53 +0000 (16:39 +0000)]
Fix build with LLVM 3.5

Reviewed-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 198167

10 years agoFix mis-merging in AddLLVM.cmake. Sorry.
NAKAMURA Takumi [Sun, 29 Dec 2013 16:19:13 +0000 (16:19 +0000)]
Fix mis-merging in AddLLVM.cmake. Sorry.

llvm-svn: 198166

10 years ago[CMake] Fix add_llvm_loadble_module.
NAKAMURA Takumi [Sun, 29 Dec 2013 16:15:31 +0000 (16:15 +0000)]
[CMake] Fix add_llvm_loadble_module.

Thanks to Edward-san, to let me know.

llvm-svn: 198165

10 years ago[CMake] add_llvm_symbol_exports: Use unique name for each target.
NAKAMURA Takumi [Sun, 29 Dec 2013 16:15:26 +0000 (16:15 +0000)]
[CMake] add_llvm_symbol_exports: Use unique name for each target.

llvm-svn: 198164

10 years ago[CMake] add_llvm_symbol_exports: Use ${native_export_file} instead of equivalent...
NAKAMURA Takumi [Sun, 29 Dec 2013 16:15:18 +0000 (16:15 +0000)]
[CMake] add_llvm_symbol_exports: Use ${native_export_file} instead of equivalent constant "symbol.*', since it is defined.

llvm-svn: 198163

10 years agoFix indentation alignment of a declaration in MipsMCCodeEmitter.cpp
Mark Seaborn [Sun, 29 Dec 2013 10:47:04 +0000 (10:47 +0000)]
Fix indentation alignment of a declaration in MipsMCCodeEmitter.cpp

llvm-svn: 198162

10 years agoStore the global variable that's created so that it's reclaimed afterwards.
Bill Wendling [Sun, 29 Dec 2013 08:00:04 +0000 (08:00 +0000)]
Store the global variable that's created so that it's reclaimed afterwards.

This plugs a memory leak in ARM's FastISel by storing the GV in Module so that
it's reclaimed.
PR17978

llvm-svn: 198160

10 years agoYet another attempt at getting cmake-clang-i686-mingw32 green.
Nico Weber [Sun, 29 Dec 2013 07:43:09 +0000 (07:43 +0000)]
Yet another attempt at getting cmake-clang-i686-mingw32 green.

llvm-svn: 198159

10 years agoMake LLVM_MSC_PREREQ() compatible with all MSVC versions
Alp Toker [Sun, 29 Dec 2013 07:39:53 +0000 (07:39 +0000)]
Make LLVM_MSC_PREREQ() compatible with all MSVC versions

The defined() preprocessor expansion wasn't working out on the lld builder.

Also update the documentation to cover another Visual Studio release versioning
convention.

llvm-svn: 198158

10 years ago[SparcV9] Use separate instruction patterns for 64 bit arithmetic instructions instea...
Venkatraman Govindaraju [Sun, 29 Dec 2013 07:15:09 +0000 (07:15 +0000)]
[SparcV9] Use separate instruction patterns for 64 bit arithmetic instructions instead of reusing 32 bit instruction patterns.
 This is done to avoid spilling the result of the 64-bit instructions to a 4-byte slot.

llvm-svn: 198157

10 years agoWindows build fixes, hopefully last part.
Nico Weber [Sun, 29 Dec 2013 06:56:28 +0000 (06:56 +0000)]
Windows build fixes, hopefully last part.

r198153 fixed the msvs bot problem, but broke a msysgit bot. This change
hopefully makes both variants happy.

llvm-svn: 198156

10 years agoPython compatibility fix for r198150
Alp Toker [Sun, 29 Dec 2013 06:51:10 +0000 (06:51 +0000)]
Python compatibility fix for r198150

Remove the stat call error reporting for now.

It wasn't essential so silent fallback should be fine here.

llvm-svn: 198155

10 years agoFix parens fail in r198142
Alp Toker [Sun, 29 Dec 2013 06:33:19 +0000 (06:33 +0000)]
Fix parens fail in r198142

Probable cause of the lld build failure on VS 2012.

llvm-svn: 198154

10 years agoAnother windows build fix attempt.
Nico Weber [Sun, 29 Dec 2013 06:12:40 +0000 (06:12 +0000)]
Another windows build fix attempt.

Inspired by http://public.kitware.com/pipermail/cmake-developers/2012-March/003768.html

llvm-svn: 198153

10 years agoProspective Python 3 fix for r198150
Alp Toker [Sun, 29 Dec 2013 05:51:07 +0000 (05:51 +0000)]
Prospective Python 3 fix for r198150

llvm-svn: 198152

10 years agoMore windows build fix attempts.
Nico Weber [Sun, 29 Dec 2013 05:39:01 +0000 (05:39 +0000)]
More windows build fix attempts.

The windows ninja build is now green, but msvs is still unhappy. Maybe that's
because the .def file was passed when building LTO_static, so only pass
symbol lists for shared libraries.

llvm-svn: 198151

10 years agolit: Incremental test scheduling
Alp Toker [Sun, 29 Dec 2013 05:09:05 +0000 (05:09 +0000)]
lit: Incremental test scheduling

Add option -i to prioritize test runs by source file modification time and
previous failure state.

This optimal scheduling reduces typical test-and-fix iteration times to a
matter of seconds by rapidly answering the questions:

  1) Did my recent change fix tests that were previously failing?
  2) Do the tests I just wrote / modified still work?

The current implementation requires write permissions to the source tree
because it uses mtimes to track failures.

llvm-svn: 198150

10 years ago[SparcV9] For codegen generated library calls that return float, set inreg flag manua...
Venkatraman Govindaraju [Sun, 29 Dec 2013 04:27:21 +0000 (04:27 +0000)]
[SparcV9] For codegen generated library calls that return float, set inreg flag manually in LowerCall().
 This makes the sparc backend to generate Sparc64 ABI compliant code.

llvm-svn: 198149

10 years agoThe same we do every commit, Pinky: Try to fix the windows build (after r198136).
Nico Weber [Sun, 29 Dec 2013 04:05:23 +0000 (04:05 +0000)]
The same we do every commit, Pinky: Try to fix the windows build (after r198136).

llvm-svn: 198148

10 years agoMake more of the x86 lowering helper functions static.
Craig Topper [Sun, 29 Dec 2013 01:48:38 +0000 (01:48 +0000)]
Make more of the x86 lowering helper functions static.

llvm-svn: 198146

10 years ago[SparcV9]: Implement lowering of long double (fp128) arguments in Sparc64 ABI.
Venkatraman Govindaraju [Sun, 29 Dec 2013 01:20:36 +0000 (01:20 +0000)]
[SparcV9]: Implement lowering of long double (fp128) arguments in Sparc64 ABI.
Also, pass fp128 arguments to varargs through integer registers if necessary.

llvm-svn: 198145

10 years agoSwitch from EVT to MVT in more of the x86 instruction lowering code.
Craig Topper [Sun, 29 Dec 2013 01:10:06 +0000 (01:10 +0000)]
Switch from EVT to MVT in more of the x86 instruction lowering code.

llvm-svn: 198144

10 years agoAnother windows build fix attempt after r198136.
Nico Weber [Sun, 29 Dec 2013 00:50:09 +0000 (00:50 +0000)]
Another windows build fix attempt after r198136.

The current quoting is stripped by cmake, try quoting more.

llvm-svn: 198143

10 years agoEnable deleted functions and explicit conversions in MSVC 2013
Alp Toker [Sun, 29 Dec 2013 00:49:14 +0000 (00:49 +0000)]
Enable deleted functions and explicit conversions in MSVC 2013

Also prospectively enable static_assert as the documentation suggests it's been
available since MSVC 2010. Let's see if the build servers agree.

llvm-svn: 198142

10 years agoDefine LLVM_MSC_PREREQ() macro to simplify _MSC_VER checks
Alp Toker [Sun, 29 Dec 2013 00:49:05 +0000 (00:49 +0000)]
Define LLVM_MSC_PREREQ() macro to simplify _MSC_VER checks

Includes documentation mapping MSC version numbers to the more familiar Visual
Studio releases.

Cleanup only to simplify upcoming C++11 / MSVC 2013 changes.

llvm-svn: 198141

10 years agoTry to fix windows build more after r198136.
Nico Weber [Sun, 29 Dec 2013 00:27:49 +0000 (00:27 +0000)]
Try to fix windows build more after r198136.

The command that cmd.exe is complaining about is:
cmd.exe /c cd /D C:\bb-win7\cmake-clang-i686-mingw32\build\tools\lto && cmake -E echo EXPORTS > symbol.def && type C:/bb-win7/cmake-clang-i686-mingw32/llvm-project/llvm/tools/lto/lto.exports >> symbol.def

Maybe quoting the filename helps.

llvm-svn: 198140

10 years agoUse `${CMAKE_COMMAND}` instead of `cmake`.
Nico Weber [Sun, 29 Dec 2013 00:11:20 +0000 (00:11 +0000)]
Use `${CMAKE_COMMAND}` instead of `cmake`.

llvm-svn: 198139

10 years agoTry to fix windows build after r198136.
Nico Weber [Sat, 28 Dec 2013 23:50:01 +0000 (23:50 +0000)]
Try to fix windows build after r198136.

`type` can't read from stdin.

llvm-svn: 198138

10 years agoTry to fix linux build after r198136.
Nico Weber [Sat, 28 Dec 2013 23:39:49 +0000 (23:39 +0000)]
Try to fix linux build after r198136.

$ needs to be written $$ in makefiles, but not in cmakefiles.

llvm-svn: 198137

10 years agoEXPORTED_SYMBOL_FILE support for cmake
Nico Weber [Sat, 28 Dec 2013 23:31:44 +0000 (23:31 +0000)]
EXPORTED_SYMBOL_FILE support for cmake

The cmake build didn't support EXPORTED_SYMBOL_FILE. Instead, it had a
Windows-only implementation in tools/lto/CMakeLists.txt, a linux-only
implementation in tools/gold/CMakeLists.txt, and a darwin-only implementation
in tools/clang/tools/libclang/CMakeLists.txt.

This attempts to consolidate these one-offs into a single place. Clients can now
just set LLVM_EXPORTED_SYMBOL_FILE and things (hopefully) Just Work, like in
the make build.

llvm-svn: 198136

10 years agoRemove windows newlines.
Nico Weber [Sat, 28 Dec 2013 23:26:51 +0000 (23:26 +0000)]
Remove windows newlines.

llvm-svn: 198135

10 years agoCodeGen: silence a C++11 feature warning
Saleem Abdulrasool [Sat, 28 Dec 2013 22:47:55 +0000 (22:47 +0000)]
CodeGen: silence a C++11 feature warning

llvm-svn: 198133

10 years agoARM IAS: handle errors more appropriately
Saleem Abdulrasool [Sat, 28 Dec 2013 22:47:53 +0000 (22:47 +0000)]
ARM IAS: handle errors more appropriately

Directive parsers must return false if the target assembler is interested in
handling the directive.  The Error member function returns true always.  Using
the 'return Error()' pattern would incorrectly indicate to the general parser
that the target was not interested in the directive, when in reality it simply
encountered a badly formed directive or some other error.  This corrects the
behaviour to ensure that the parser behaves appropriately.

llvm-svn: 198132

10 years agoUninitialized variable (in never taken path) after factoring.
Andrew Trick [Sat, 28 Dec 2013 22:25:57 +0000 (22:25 +0000)]
Uninitialized variable (in never taken path) after factoring.

llvm-svn: 198131

10 years agoBriefly document diag-build.sh
Alp Toker [Sat, 28 Dec 2013 21:59:11 +0000 (21:59 +0000)]
Briefly document diag-build.sh

It may be a quick and dirty script but it's still useful to have some
indication as to its purpose.

Text taken straight from Jordan's r158682 commit message.

llvm-svn: 198128

10 years agoRename isBuiltinCall() to getBuiltinCallee()
Alp Toker [Sat, 28 Dec 2013 21:59:02 +0000 (21:59 +0000)]
Rename isBuiltinCall() to getBuiltinCallee()

This better describes what the function does.

Cleanup only.

llvm-svn: 198127

10 years agoTidy up CGCXXABI creation
Alp Toker [Sat, 28 Dec 2013 21:58:40 +0000 (21:58 +0000)]
Tidy up CGCXXABI creation

'create' functions conventionally return a pointer, not a reference.

Also use an OwningPtr to get replace the delete of a reference member.

No functional change.

llvm-svn: 198126

10 years agoNew machine model for cortex-a9. Schedule for resources and latency.
Andrew Trick [Sat, 28 Dec 2013 21:57:05 +0000 (21:57 +0000)]
New machine model for cortex-a9. Schedule for resources and latency.

Schedule more conservatively to account for stalls on floating point
resources and latency. Use the AGU resource to model latency stalls
since it's shared between FP and LD/ST instructions. This might not be
completely accurate but should work well in practice.

llvm-svn: 198125

10 years agoAdded debugging options: -misched-only-func/block
Andrew Trick [Sat, 28 Dec 2013 21:57:02 +0000 (21:57 +0000)]
Added debugging options: -misched-only-func/block

llvm-svn: 198124

10 years agoThe Cortex-A9 machine model is incomplete. Mark it as such.
Andrew Trick [Sat, 28 Dec 2013 21:57:00 +0000 (21:57 +0000)]
The Cortex-A9 machine model is incomplete. Mark it as such.

Many vector operations never had itineraries. Since the new machine
model was a mapping from existing itinerary classes, we don't have a
model for these. We still want to migrate A9 even though no one has
invested in a complete model, so mark it incomplete to avoid the
scheduler asserting.

llvm-svn: 198123

10 years agoAdd a PostMachineScheduler pass with generic implementation.
Andrew Trick [Sat, 28 Dec 2013 21:56:57 +0000 (21:56 +0000)]
Add a PostMachineScheduler pass with generic implementation.

PostGenericScheduler uses either the new machine model or the hazard
checker for top-down scheduling. Most of the infrastructure for PreRA
machine scheduling is reused.

With a some tuning, this should allow MachineScheduler to be default
for all ARM targets, including cortex-A9, using the new machine
model. Likewise, with additional tuning, it should be able to replace
PostRAScheduler for all targets.

The PostMachineScheduler pass does not currently run the
AntiDepBreaker. There is less need for it on targets that are already
running preRA MachineScheduler. I want to prove it's necessary before
committing to the maintenance burden.

The PostMachineScheduler also currently removes kill flags and adds
them all back later. This is a bit ridiculous. I'd prefer passes to
directly use a liveness utility than rely on flags.

A test case that enables this scheduler will be included in a
subsequent checkin that updates the A9 model.

llvm-svn: 198122

10 years agoMove the PostRA scheduler's fixupKills function for reuse.
Andrew Trick [Sat, 28 Dec 2013 21:56:55 +0000 (21:56 +0000)]
Move the PostRA scheduler's fixupKills function for reuse.

llvm-svn: 198121

10 years agoStub out a PostMachineScheduler pass.
Andrew Trick [Sat, 28 Dec 2013 21:56:51 +0000 (21:56 +0000)]
Stub out a PostMachineScheduler pass.

Placeholder and boilerplate for a PostRA MachineScheduler pass.

llvm-svn: 198120

10 years agoFactor MI-Sched in preparation for post-ra scheduling support.
Andrew Trick [Sat, 28 Dec 2013 21:56:47 +0000 (21:56 +0000)]
Factor MI-Sched in preparation for post-ra scheduling support.

Factor the MachineFunctionPass into MachineSchedulerBase.

Split the DAG class into ScheduleDAGMI and SchedulerDAGMILive.

llvm-svn: 198119

10 years agoRevert part of r198115 to see if it fixes a buildbot failure.
Craig Topper [Sat, 28 Dec 2013 18:44:58 +0000 (18:44 +0000)]
Revert part of r198115 to see if it fixes a buildbot failure.

llvm-svn: 198118

10 years agoUse getSimpleValueType in a few spots where the type should be simple.
Craig Topper [Sat, 28 Dec 2013 18:35:48 +0000 (18:35 +0000)]
Use getSimpleValueType in a few spots where the type should be simple.

llvm-svn: 198117

10 years agoMinor indentation fix to match other switch statements. Change llvm_unreachable text...
Craig Topper [Sat, 28 Dec 2013 17:37:32 +0000 (17:37 +0000)]
Minor indentation fix to match other switch statements. Change llvm_unreachable text to match similar places.

llvm-svn: 198116

10 years agoMark some Type and EVT methods as LLVM_READONLY.
Craig Topper [Sat, 28 Dec 2013 16:17:26 +0000 (16:17 +0000)]
Mark some Type and EVT methods as LLVM_READONLY.

llvm-svn: 198115

10 years agollvm/test/CodeGen/X86/vselect.ll: Unbreak Windows x64 targets to add -mtriple=x86_64...
NAKAMURA Takumi [Sat, 28 Dec 2013 13:04:29 +0000 (13:04 +0000)]
llvm/test/CodeGen/X86/vselect.ll: Unbreak Windows x64 targets to add -mtriple=x86_64-unknown-unknown.

llvm-svn: 198114

10 years ago[X86] Teach the backend how to fold target specific dag node for packed
Andrea Di Biagio [Sat, 28 Dec 2013 11:11:52 +0000 (11:11 +0000)]
[X86] Teach the backend how to fold target specific dag node for packed
vector shift by immedate count (VSHLI/VSRLI/VSRAI) into a build_vector when
the vector in input to the shift is a build_vector of all constants or UNDEFs.

Target specific nodes for packed shifts by immediate count are in
general introduced by function 'getTargetVShiftByConstNode' (in
X86ISelLowering.cpp) when lowering shift operations, SSE/AVX immediate
shift intrinsics and (only in very few cases) SIGN_EXTEND_INREG dag
nodes.

This patch adds extra rules for simplifying vector shifts inside
function 'getTargetVShiftByConstNode'.

Added file test/CodeGen/X86/vec_shift5.ll to verify that packed
shifts by immediate are correctly folded into a build_vector when the
input vector to the shift dag node is a vector of constants or undefs.

llvm-svn: 198113

10 years agoSimplify if ... return repetition.
Rui Ueyama [Sat, 28 Dec 2013 10:09:21 +0000 (10:09 +0000)]
Simplify if ... return repetition.

llvm-svn: 198108

10 years agoAdd a new way to bind a format to a type: by enum type
Enrico Granata [Sat, 28 Dec 2013 08:44:02 +0000 (08:44 +0000)]
Add a new way to bind a format to a type: by enum type
The "type format add" command gets a new flag --type (-t). If you pass -t <sometype>, upon fetching the value for an object of your type,
LLDB will display it as-if it was of enumeration type <sometype>
This is useful in cases of non-contiguous enums where there are empty gaps of unspecified values, and as such one cannot type their variables as the enum type,
but users would still like to see them as-if they were of the enum type (e.g. DWARF field types with their user-reserved ranges)

The SB API has also been improved to handle both types of formats, and a test case is added

llvm-svn: 198105

10 years ago[PECOFF] Warn only when /export options are not compatible.
Rui Ueyama [Sat, 28 Dec 2013 08:40:37 +0000 (08:40 +0000)]
[PECOFF] Warn only when /export options are not compatible.

Currently LLD always print a warning message if the same symbol is specified
more than once for /export option. It's a bit annoying because specifying the
same symbol with compatible options is actually safe and considered as a
normal use case. This patch makes LLD to warn only when incompatible export
options are given.

llvm-svn: 198104

10 years agotemporary commit
Rui Ueyama [Sat, 28 Dec 2013 08:40:23 +0000 (08:40 +0000)]
temporary commit

llvm-svn: 198103

10 years ago[PECOFF] Use std::set to store export symbol descriptors.
Rui Ueyama [Sat, 28 Dec 2013 08:11:21 +0000 (08:11 +0000)]
[PECOFF] Use std::set to store export symbol descriptors.

Each export symbol descriptor has unique name attribute, so std::set is
better container than std::vector for it. No functionality change.

llvm-svn: 198102

10 years agoAsmParser: cleanup diagnostics for .rep/.rept
Saleem Abdulrasool [Sat, 28 Dec 2013 06:39:29 +0000 (06:39 +0000)]
AsmParser: cleanup diagnostics for .rep/.rept

Avoid double diagnostics for invalid expressions for count.  Improve caret
location for negative count.

llvm-svn: 198099

10 years agoIAS: support .rep as an alias for .rept
Saleem Abdulrasool [Sat, 28 Dec 2013 05:54:33 +0000 (05:54 +0000)]
IAS: support .rep as an alias for .rept

The GNU assembler supports .rep as an alias for .rept.  This simply creates the
alias for it and introduces a test for both .rept and .rep.

llvm-svn: 198097

10 years agoPropagate "-arch x86_64h" setting to the linker. <rdar://problem/15711488>
Bob Wilson [Sat, 28 Dec 2013 05:26:14 +0000 (05:26 +0000)]
Propagate "-arch x86_64h" setting to the linker. <rdar://problem/15711488>

This is a follow-up to r194907, which added a new -arch setting to make it
easier to specify AVX2 targets. The "-arch x86_64h" option needs to be passed
on to the linker, but it was getting canonicalized to x86_64 by the code
in getArchTypeForDarwinArchName.

llvm-svn: 198096

10 years agoARMAsmParser: fix typo in comment
Saleem Abdulrasool [Sat, 28 Dec 2013 03:07:12 +0000 (03:07 +0000)]
ARMAsmParser: fix typo in comment

llvm-svn: 198095

10 years agoSilence a dubious GCC warning about a set but unused global. Indeed, the
Chandler Carruth [Sat, 28 Dec 2013 02:50:00 +0000 (02:50 +0000)]
Silence a dubious GCC warning about a set but unused global. Indeed, the
purpose of this global is to be set and not used. =]

llvm-svn: 198094

10 years agoDisable transforms that introduce calls to exp10*() on Linux due to
Chandler Carruth [Sat, 28 Dec 2013 02:40:19 +0000 (02:40 +0000)]
Disable transforms that introduce calls to exp10*() on Linux due to
widespread glibc bugs.

The glibc implementation of exp10 has a very serious precision bug in
version 2.15 (and older versions). This is still very widely used (the
current Ubuntu LTS for example uses it) and so it isn't reasonable to
make transforms that produce these functions. This fixes many
miscompiles introduced when we started transforming pow(10.0, ...) into
exp10, and it may have fixed other latent miscompiles where exp10
provided sufficient precision but exp10f did not.

This is all really horrible. The primary bug has been fixed for over
a year and glibc 2.18 works correctly for the test cases I have, but it
will be 2017 before the LTS using 2.15 is no longer supported by Ubuntu
(and thus reasonable for folks to be relying on). =[ We're either going
to need to live without these optimizations, or find a way to switch
behavior more dynamically than using simply the fact that the OS is
"Linux".

To make matters worse, there appears to be significant testing and
fixing of numerous other bugs in the exp10 family of functions right now
in glibc. While those haven't been causing problems I've seen in the
wild, it gives me concerns that we may need to wait until an even later
release of glibc before we can reliably transform code into exp10.

llvm-svn: 198093

10 years agoRemove AsmPrinter::needsRelocationsForDwarfStringPool() since it's
Eric Christopher [Sat, 28 Dec 2013 01:39:17 +0000 (01:39 +0000)]
Remove AsmPrinter::needsRelocationsForDwarfStringPool() since it's
just calling into MAI and is only abstracting for a single interface that
we actually need to check in multiple places.

llvm-svn: 198092

10 years agoFix a gcc-4.8 warning, about extraneous semicolons.
Joey Gouly [Sat, 28 Dec 2013 00:46:57 +0000 (00:46 +0000)]
Fix a gcc-4.8 warning, about extraneous semicolons.

llvm-svn: 198091

10 years agoAttempt to fix JIT unit tests after r198087.
Nico Weber [Fri, 27 Dec 2013 23:36:22 +0000 (23:36 +0000)]
Attempt to fix JIT unit tests after r198087.

llvm-svn: 198089

10 years agoSet NO_DEAD_STRIP for clang after llvm r198087.
Nico Weber [Fri, 27 Dec 2013 22:39:28 +0000 (22:39 +0000)]
Set NO_DEAD_STRIP for clang after llvm r198087.

llvm-svn: 198088

10 years agoStrip dead code when linking by default with BFD ld (linux, ...) and ld64 (os x).
Nico Weber [Fri, 27 Dec 2013 22:38:59 +0000 (22:38 +0000)]
Strip dead code when linking by default with BFD ld (linux, ...) and ld64 (os x).

This reduces the size of clang-format from 22 MB to 1.8 MB, diagtool goes from
21 MB to 2.8 MB, libclang.so goes from 29 MB to 20 MB, etc.  The size of the
bin/ folder shrinks from 270 MB to 200 MB.

Targets that support plugins and don't already use EXPORTED_SYMBOL_FILE
(which libclang and libLTO already do) can set NO_DEAD_STRIP to opt out.

llvm-svn: 198087

10 years agoMove MS header search test inputs to Inputs/
Reid Kleckner [Fri, 27 Dec 2013 20:41:49 +0000 (20:41 +0000)]
Move MS header search test inputs to Inputs/

llvm-svn: 198086

10 years agoReduce indentation of some VFTableBuilder code.
Reid Kleckner [Fri, 27 Dec 2013 20:29:16 +0000 (20:29 +0000)]
Reduce indentation of some VFTableBuilder code.

No functionality change.

llvm-svn: 198085

10 years agoTeach DAGCombiner how to fold a SIGN_EXTEND_INREG of a BUILD_VECTOR of
Andrea Di Biagio [Fri, 27 Dec 2013 20:20:28 +0000 (20:20 +0000)]
Teach DAGCombiner how to fold a SIGN_EXTEND_INREG of a BUILD_VECTOR of
ConstantSDNodes (or UNDEFs) into a simple BUILD_VECTOR.

For example, given the following sequence of dag nodes:

  i32 C = Constant<1>
  v4i32 V = BUILD_VECTOR C, C, C, C
  v4i32 Result = SIGN_EXTEND_INREG V, ValueType:v4i1

The SIGN_EXTEND_INREG node can be folded into a build_vector since
the vector in input is a BUILD_VECTOR of constants.

The optimized sequence is:

  i32 C = Constant<-1>
  v4i32 Result = BUILD_VECTOR C, C, C, C

llvm-svn: 198084

10 years agoSilence compile warning by removing unused SourceMgr member
Will Wilson [Fri, 27 Dec 2013 20:02:27 +0000 (20:02 +0000)]
Silence compile warning by removing unused SourceMgr member

llvm-svn: 198083

10 years agoImplement MSVC header search algorithm in MicrosoftMode.
Will Wilson [Fri, 27 Dec 2013 19:46:16 +0000 (19:46 +0000)]
Implement MSVC header search algorithm in MicrosoftMode.
Follows algorithm described here: http://msdn.microsoft.com/en-us/library/36k2cdd4.aspx

llvm-svn: 198082

10 years agoFix incorrect copy-pasted method decl that MSVC allowed.
Reid Kleckner [Fri, 27 Dec 2013 19:45:53 +0000 (19:45 +0000)]
Fix incorrect copy-pasted method decl that MSVC allowed.

llvm-svn: 198081

10 years ago[ms-cxxabi] Emit fewer trivial return adjusting thunks
Reid Kleckner [Fri, 27 Dec 2013 19:43:59 +0000 (19:43 +0000)]
[ms-cxxabi] Emit fewer trivial return adjusting thunks

Most importantly, this makes our vtable layout match MSVC's.  Previously
we would emit a return adjusting thunk whenever the return types
differed, even if the adjustment would have been trivial.

MSVC does emit some trivial return adjusting thunks, but only if there
was already an overridden method that required a return adjustment.

llvm-svn: 198080

10 years agoDebugInfo: Remove dead code, DICompositeType::addMember(DIDescriptor D)
David Blaikie [Fri, 27 Dec 2013 19:11:52 +0000 (19:11 +0000)]
DebugInfo: Remove dead code, DICompositeType::addMember(DIDescriptor D)

It's no longer necessary to lazily add members to the DICompositeType
member list. Instead any lazy members (special member functions and
member template instantiations) are added to the parent late based on
their context link, the same way that nested types have always been
handled (never being in the member list - just added to the parent DIE
lazily based on context).

Clang's been updated not to use this function anymore as it improves
type unit consistency by never emitting lazy members in type units.

llvm-svn: 198079

10 years agoIn an effort to reduce the likelihood of text getting out of sync, reusing the text...
Aaron Ballman [Fri, 27 Dec 2013 19:08:57 +0000 (19:08 +0000)]
In an effort to reduce the likelihood of text getting out of sync, reusing the text from some diagnostics explicitly. No functional changes intended.

llvm-svn: 198078

10 years agoRemoved a string literal for a diagnostic, and updated the diagnostic to not manually...
Aaron Ballman [Fri, 27 Dec 2013 16:30:46 +0000 (16:30 +0000)]
Removed a string literal for a diagnostic, and updated the diagnostic to not manually quote. No functional changes intended.

llvm-svn: 198076

10 years ago[PECOFF] Add file extensions to temporary files.
Rui Ueyama [Fri, 27 Dec 2013 08:37:40 +0000 (08:37 +0000)]
[PECOFF] Add file extensions to temporary files.

No functionality change.

llvm-svn: 198075

10 years ago[PECOFF] Add a test for /noentry.
Rui Ueyama [Fri, 27 Dec 2013 08:19:21 +0000 (08:19 +0000)]
[PECOFF] Add a test for /noentry.

llvm-svn: 198074

10 years agoBury leaked pointers in a global array to silence a leak detector in --disable-free...
Kostya Serebryany [Fri, 27 Dec 2013 08:11:08 +0000 (08:11 +0000)]
Bury leaked pointers in a global array to silence a leak detector in --disable-free mode

Summary:
This is an alternative to http://llvm-reviews.chandlerc.com/D2475
suggested by Chandler.

Reviewers: chandlerc, rnk, dblaikie

CC: cfe-commits, earthdok
Differential Revision: http://llvm-reviews.chandlerc.com/D2478

llvm-svn: 198073

10 years ago[PECOFF] Change the DLL entry symbol.
Rui Ueyama [Fri, 27 Dec 2013 07:14:34 +0000 (07:14 +0000)]
[PECOFF] Change the DLL entry symbol.

I'm not 100% sure but it looks like DLL entry symbol (DLL initializer function
name) should be _DllMainCRTStartup@12. The reason why I'm not very sure is
because I have no idea what "@12" suffix is, but without it the symbol won't
be resolved...

llvm-svn: 198072

10 years ago[PECOFF] Parse .drectve section before reading other file contents.
Rui Ueyama [Fri, 27 Dec 2013 07:05:04 +0000 (07:05 +0000)]
[PECOFF] Parse .drectve section before reading other file contents.

Currently .drectve section contents are parsed after other sections are parsed.
That order may result in wrong results if other sections depend on command line
options in the directive section.

For example, if a weak symbol is defined using /alternatename option in the
directive section, we have to read it first and then read the text section
contents. Otherwise the weak symbol won't be defined.

This patch changes the order to fix the issue.

llvm-svn: 198071

10 years agoclang-format: Break default arguments less eagerly.
Daniel Jasper [Fri, 27 Dec 2013 06:39:56 +0000 (06:39 +0000)]
clang-format: Break default arguments less eagerly.

Before:
  void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(int aaaaaaaaaaaaaaaaaaaaaaaaaaaa =
                                              1);

After:
  void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
      int aaaaaaaaaaaaaaaaaaaaaaaaaaaa = 1);

llvm-svn: 198070

10 years agoUse two variables here rather than reusing (and abusing) one. This is
Chandler Carruth [Fri, 27 Dec 2013 04:44:35 +0000 (04:44 +0000)]
Use two variables here rather than reusing (and abusing) one. This is
much more clear to me. I meant to make this change before committing the
original patch, but forgot to merge it in. Sorry.

llvm-svn: 198069

10 years agoIntroduce a simple line-by-line iterator type into the Support library.
Chandler Carruth [Fri, 27 Dec 2013 04:28:57 +0000 (04:28 +0000)]
Introduce a simple line-by-line iterator type into the Support library.

This is an iterator which you can build around a MemoryBuffer. It will
iterate through the non-empty, non-comment lines of the buffer as
a forward iterator. It should be small and reasonably fast (although it
could be made much faster if anyone cares, I don't really...).

This will be used to more simply support the text-based sample
profile file format, and is largely based on the original patch by
Diego. I've re-worked the style of it and separated it from the work of
producing a MemoryBuffer from a file which both simplifies the interface
and makes it easier to test.

The style of the API follows the C++ standard naming conventions to fit
in better with iterators in general, much like the Path and FileSystem
interfaces follow standard-based naming conventions.

llvm-svn: 198068

10 years ago[PECOFF] Skip empty .drectve sections.
Rui Ueyama [Fri, 27 Dec 2013 03:34:34 +0000 (03:34 +0000)]
[PECOFF] Skip empty .drectve sections.

There are many object files in the standard library who have empty .drective
sections. Parsing the empty string is not wrong but a waste.

llvm-svn: 198067

10 years agoFix comment.
Rui Ueyama [Fri, 27 Dec 2013 02:51:53 +0000 (02:51 +0000)]
Fix comment.

llvm-svn: 198066

10 years agoWarn on mismatched parentheses in memcmp and friends.
Nico Weber [Thu, 26 Dec 2013 23:38:39 +0000 (23:38 +0000)]
Warn on mismatched parentheses in memcmp and friends.

Thisadds a new warning that warns on code like this:

  if (memcmp(a, b, sizeof(a) != 0))

The warning looks like:

test4.cc:5:30: warning: size argument in 'memcmp' call is a comparison [-Wmemsize-comparison]
  if (memcmp(a, b, sizeof(a) != 0))
                   ~~~~~~~~~~^~~~
test4.cc:5:7: note: did you mean to compare the result of 'memcmp' instead?
  if (memcmp(a, b, sizeof(a) != 0))
      ^                          ~
                            )
test4.cc:5:20: note: explicitly cast the argument to size_t to silence this warning
  if (memcmp(a, b, sizeof(a) != 0))
                   ^
                   (size_t)(     )
1 warning generated.

This found 2 bugs in chromium and has 0 false positives on both chromium and
llvm.

The idea of triggering this warning on a binop in the size argument is due to
rnk.

llvm-svn: 198063

10 years ago[ms-abi] unix-line endings in lit test, no functional change
Warren Hunt [Thu, 26 Dec 2013 22:10:14 +0000 (22:10 +0000)]
[ms-abi] unix-line endings in lit test, no functional change

llvm-svn: 198060

10 years ago[ms-abi] Fixes improperly sized vfptrs with pragma pack
Warren Hunt [Thu, 26 Dec 2013 22:09:12 +0000 (22:09 +0000)]
[ms-abi] Fixes improperly sized vfptrs with pragma pack

With pragma pack, the layout engine would produce vfptrs that were
packed width rather than pointer width.  This patch addresses the issue
and adds a test case.

llvm-svn: 198059