oota-llvm.git
10 years agoAdd warning capabilities in LLVM.
Quentin Colombet [Mon, 16 Dec 2013 23:22:51 +0000 (23:22 +0000)]
Add warning capabilities in LLVM.

The patch adds a new LLVMContext::diagnose that can be used to communicate to
the front-end, if any, that something of interest happened.
The diagnostics are supported by a new abstraction, the DiagnosticInfo class.
The base class contains the following information:
- The kind of the report: What this is about.
- The severity of the report: How bad this is.

This patch also adds 2 classes:
- DiagnosticInfoInlineAsm: For inline asm reporting. Basically, this diagnostic
will be used to switch to the new diagnostic API for LLVMContext::emitError.
- DiagnosticStackSize: For stack size reporting. Comes as a replacement of the
hard coded warning in PEI.

This patch also features dynamic diagnostic identifiers. In other words plugins
can use this infrastructure for their own diagnostics (for more details, see
getNextAvailablePluginDiagnosticKind).

This patch introduces a new DiagnosticHandlerTy and a new DiagnosticContext in
the LLVMContext that should be set by the front-end to be able to map these
diagnostics in its own system.

http://llvm-reviews.chandlerc.com/D2376
<rdar://problem/15515174>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197438 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoEnable double to float shrinking optimizations for binary functions like 'fmin/fmax...
Yi Jiang [Mon, 16 Dec 2013 22:42:40 +0000 (22:42 +0000)]
Enable double to float shrinking optimizations for binary functions like 'fmin/fmax'. Fix radar:15283121

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197434 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Added -u option for unconditional branch info.
Yuchen Wu [Mon, 16 Dec 2013 22:14:02 +0000 (22:14 +0000)]
llvm-cov: Added -u option for unconditional branch info.

Outputs branch information for unconditional branches in addition to
conditional branches. -b option must be enabled.

Also updated tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197432 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Stackmap] Allow WebKit_JS calling convention to store 4 byte sized and aligned argum...
Juergen Ributzka [Mon, 16 Dec 2013 22:05:32 +0000 (22:05 +0000)]
[Stackmap] Allow WebKit_JS calling convention to store 4 byte sized and aligned arguments.

This allows the WebKit_JS calling convention to perform partial writes on a 4
byte granularity to stack slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197431 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd a reduced testcase from the recent bootstrap crash.
Rafael Espindola [Mon, 16 Dec 2013 21:24:00 +0000 (21:24 +0000)]
Add a reduced testcase from the recent bootstrap crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197426 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix typo in instruction name.
Matt Arsenault [Mon, 16 Dec 2013 20:58:33 +0000 (20:58 +0000)]
Fix typo in instruction name.

SI_KIL -> SI_KILL

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197425 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Allow MachineCSE to coalesce trivial subregister copies the same way that...
Rafael Espindola [Mon, 16 Dec 2013 20:57:09 +0000 (20:57 +0000)]
Revert "Allow MachineCSE to coalesce trivial subregister copies the same way that it coalesces normal copies."

This reverts commit r197414.

It broke the ppc64 bootstrap. I will post a testcase in a sec.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197424 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Removed extra semicolon from ;;.
Yuchen Wu [Mon, 16 Dec 2013 20:03:11 +0000 (20:03 +0000)]
llvm-cov: Removed extra semicolon from ;;.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197418 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Stackmap] The first integer argument is passed in register for the WebKit_JS calling...
Juergen Ributzka [Mon, 16 Dec 2013 19:53:31 +0000 (19:53 +0000)]
[Stackmap] The first integer argument is passed in register for the WebKit_JS calling convention.

Pass the first integer argument (callee) in register to optimize inline caches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197416 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAllow MachineCSE to coalesce trivial subregister copies the same way
Andrew Trick [Mon, 16 Dec 2013 19:36:21 +0000 (19:36 +0000)]
Allow MachineCSE to coalesce trivial subregister copies the same way
that it coalesces normal copies.

Without this, MachineCSE is powerless to handle redundant operations
with truncated source operands.

This required fixing the 2-addr pass to handle tied subregisters. It
isn't clear what combinations of subregisters can legally be tied, but
the simple case of truncated source operands is now safely handled:

     %vreg11<def> = COPY %vreg1:sub_32bit; GR32:%vreg11 GR64:%vreg1
     %vreg12<def> = COPY %vreg2:sub_32bit; GR32:%vreg12 GR64:%vreg2
     %vreg13<def,tied1> = ADD32rr %vreg11<tied0>, %vreg12<kill>, %EFLAGS<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197414 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agowhitespace
Andrew Trick [Mon, 16 Dec 2013 19:36:18 +0000 (19:36 +0000)]
whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197413 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoOne last cleanup of LLVM's DataLayout strings.
Rafael Espindola [Mon, 16 Dec 2013 19:31:14 +0000 (19:31 +0000)]
One last cleanup of LLVM's DataLayout strings.

Produce them in the same order on every target. The order is that of
getStringRepresentation: e|E-i*-f*-v*-a*-s*-n*-S*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197411 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoStructure R600's computeDataLayout more like every other target.
Rafael Espindola [Mon, 16 Dec 2013 19:18:57 +0000 (19:18 +0000)]
Structure R600's computeDataLayout more like every other target.

While there, simplify "p3:32:32:32" to "p3:32:32".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197407 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRecognize EABIHF as environment and use it for RTAPI + VFP.
Joerg Sonnenberger [Mon, 16 Dec 2013 18:51:28 +0000 (18:51 +0000)]
Recognize EABIHF as environment and use it for RTAPI + VFP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197405 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[AArch64] Fix v1fx patterns for Floating-point Multiply Extend and Floating-point...
Chad Rosier [Mon, 16 Dec 2013 18:29:35 +0000 (18:29 +0000)]
[AArch64] Fix v1fx patterns for Floating-point Multiply Extend and Floating-point Compare to Zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197402 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMemoryBuffer: Increase the alignment of small file buffers to 16
Reid Kleckner [Mon, 16 Dec 2013 18:18:12 +0000 (18:18 +0000)]
MemoryBuffer: Increase the alignment of small file buffers to 16

This was manifesting as an LLVM_ASSUME_ALIGNED() failure in an ELF debug
info test when building LLVM with clang in the Microsoft C++ ABI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197401 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThe preferred alignment defaults to the abi alignment. Omit if it is the same.
Rafael Espindola [Mon, 16 Dec 2013 18:01:51 +0000 (18:01 +0000)]
The preferred alignment defaults to the abi alignment. Omit if it is the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197400 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't duplicate the DataLayout defaults for integer, floats and vectors.
Rafael Espindola [Mon, 16 Dec 2013 17:41:15 +0000 (17:41 +0000)]
Don't duplicate the DataLayout defaults for integer, floats and vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197398 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoOn DataLayout, omit the default of p:64:64:64.
Rafael Espindola [Mon, 16 Dec 2013 17:15:29 +0000 (17:15 +0000)]
On DataLayout, omit the default of p:64:64:64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197397 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] ${LLVM_MAIN_SRC_DIR}/include can be represented as ${LLVM_MAIN_INCLUDE_DIR}.
NAKAMURA Takumi [Mon, 16 Dec 2013 16:14:19 +0000 (16:14 +0000)]
[CMake] ${LLVM_MAIN_SRC_DIR}/include can be represented as ${LLVM_MAIN_INCLUDE_DIR}.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197396 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Introduce LLVM_RUNTIME_OUTPUT_INTDIR and LLVM_LIBRARY_OUTPUT_INTDIR to reduce...
NAKAMURA Takumi [Mon, 16 Dec 2013 16:03:08 +0000 (16:03 +0000)]
[CMake] Introduce LLVM_RUNTIME_OUTPUT_INTDIR and LLVM_LIBRARY_OUTPUT_INTDIR to reduce references to CMAKE_CFG_INTDIR.

Each of them forms like;
  ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}
  ${CMAKE_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197394 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSet has_asmparser in PowerPC/LLVMBuild.txt
Hal Finkel [Mon, 16 Dec 2013 15:48:09 +0000 (15:48 +0000)]
Set has_asmparser in PowerPC/LLVMBuild.txt

PowerPC now has an asm parser (and has for many months now); indicate this in
PowerPC/LLVMBuild.txt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197393 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Introduce LLVM_INCLUDE_DIR.
NAKAMURA Takumi [Mon, 16 Dec 2013 15:05:39 +0000 (15:05 +0000)]
[CMake] Introduce LLVM_INCLUDE_DIR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197392 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agofixed one more line
Elena Demikhovsky [Mon, 16 Dec 2013 14:36:50 +0000 (14:36 +0000)]
fixed one more line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197387 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFixed the test - added -mcpu=penryn flag to avoid ambiguity in code generation.
Elena Demikhovsky [Mon, 16 Dec 2013 14:24:08 +0000 (14:24 +0000)]
Fixed the test - added -mcpu=penryn flag to avoid ambiguity in code generation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197385 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAVX-512: Added legal type MVT::i1 and VK1 register for it.
Elena Demikhovsky [Mon, 16 Dec 2013 13:52:35 +0000 (13:52 +0000)]
AVX-512: Added legal type MVT::i1 and VK1 register for it.
Added scalar compare VCMPSS, VCMPSD.
Implemented LowerSELECT for scalar FP operations.
I replaced FSETCCss, FSETCCsd with one node type FSETCCs.
Node extract_vector_elt(v16i1/v8i1, idx) returns an element of type i1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197384 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-config: Fixup r197380, tweak for cross compilation. SYSTEM_LIBS should be -...
NAKAMURA Takumi [Mon, 16 Dec 2013 13:09:06 +0000 (13:09 +0000)]
llvm-config: Fixup r197380, tweak for cross compilation. SYSTEM_LIBS should be --host's in BuildTools/llvm-config.

FIXME: Host's llvm-config is not generated. It's for target's.
Host tools, aka "BuildTools", in utils, do not require llvm-config to build.

For example with --host=i686-pc-mingw32 --build=linux,

  $ BuildTools/Release+Asserts/bin/llvm-config --libs support
  -lLLVMSupport
  -lpthread -lshell32 -lpsapi -limagehlp -lm

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197382 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-config: Print SYSTEM_LIBS with --libs, instead of --ldflags.
NAKAMURA Takumi [Mon, 16 Dec 2013 11:22:22 +0000 (11:22 +0000)]
llvm-config: Print SYSTEM_LIBS with --libs, instead of --ldflags.

LLVM libs are printed in the first line, and system libs are printed in the next line.

  $ bin/llvm-config --libs object
  -lLLVMObject -lLLVMSupport
  -lrt -ldl -ltinfo -lpthread -lz

It is workaround for PR3347 and PR8449.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197380 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix Android regression in r197332.
Evgeniy Stepanov [Mon, 16 Dec 2013 07:02:51 +0000 (07:02 +0000)]
Fix Android regression in r197332.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197366 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[AArch64]Fix the pattern match failure for v1i8/v1i16/v1i32 types.
Hao Liu [Mon, 16 Dec 2013 02:51:28 +0000 (02:51 +0000)]
[AArch64]Fix the pattern match failure for v1i8/v1i16/v1i32 types.
Currently we have such types as legal vector types. The DAG combiner may generate some DAG nodes having such types but we don't have patterns to match them.
E.g. a load i32 and a bitcast i32 to v1i32 will be combined into a load v1i32:
     bitcast (load i32) to v1i32 -> load v1i32.
So this patch fixes such problems for load/dup instructions.
If v1i8/v1i16/v1i32 are not legal any more, the code in this patch can be deleted. So I also add some FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197361 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoremove an uneeded statement (condition is covered by the statement
Reed Kotler [Sun, 15 Dec 2013 23:33:59 +0000 (23:33 +0000)]
remove an uneeded statement (condition is covered by the statement
that follows).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197358 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix some indentation.
Reed Kotler [Sun, 15 Dec 2013 23:03:35 +0000 (23:03 +0000)]
Fix some indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197357 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGet rid of an superfluous tab in the .s file. This was originally
Reed Kotler [Sun, 15 Dec 2013 22:02:31 +0000 (22:02 +0000)]
Get rid of an superfluous tab in the .s file. This was originally
part of a multi-line pseudo which worked around a linker bug for mips16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197356 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoLast change for mips16 prolog/epilog cleanup and optimization.
Reed Kotler [Sun, 15 Dec 2013 20:49:30 +0000 (20:49 +0000)]
Last change for mips16 prolog/epilog cleanup and optimization.
Some tiny cosmetic code changes to follow. Because of the wide
ranging nature of the patch a full 24 test cycle was needed to
check against regression. This was the smallest patch I could
make to progress from the earlier ones in the series.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197350 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThere is no exp10 on NetBSD.
Joerg Sonnenberger [Sun, 15 Dec 2013 20:36:17 +0000 (20:36 +0000)]
There is no exp10 on NetBSD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197348 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoEnsure bitcode encoding of global variable attributes stays stable. Patch by Boaz...
Michael Kuperstein [Sun, 15 Dec 2013 11:50:45 +0000 (11:50 +0000)]
Ensure bitcode encoding of global variable attributes stays stable. Patch by Boaz Ouriel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197340 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix AsmWriter's handling of SPIR calling conventions. Patch by Boaz Ouriel.
Michael Kuperstein [Sun, 15 Dec 2013 10:01:20 +0000 (10:01 +0000)]
Fix AsmWriter's handling of SPIR calling conventions. Patch by Boaz Ouriel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197335 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReplace string matching with a switch on Triple::getEnvironment.
Joerg Sonnenberger [Sun, 15 Dec 2013 00:12:52 +0000 (00:12 +0000)]
Replace string matching with a switch on Triple::getEnvironment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197332 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Stackmap] Refactor operand parsing.
Juergen Ributzka [Sat, 14 Dec 2013 23:06:19 +0000 (23:06 +0000)]
[Stackmap] Refactor operand parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197329 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't manually calculate size in bytes
Matt Arsenault [Sat, 14 Dec 2013 18:21:59 +0000 (18:21 +0000)]
Don't manually calculate size in bytes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197327 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Powerpc darwin] AsmParser Base implementation.
Iain Sandoe [Sat, 14 Dec 2013 13:34:02 +0000 (13:34 +0000)]
[Powerpc darwin] AsmParser Base implementation.

This is a base implementation of the powerpc-apple-darwin asm parser dialect.

* Enables infrastructure (essentially isDarwin()) and fixes up the parsing of asm directives to separate out ELF and MachO/Darwin additions.
* Enables parsing of {r,f,v}XX as register identifiers.
* Enables parsing of lo16() hi16() and ha16() as modifiers.

The changes to the test case are from David Fang (fangism).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197324 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove weak vtables. No functional change.
Juergen Ributzka [Sat, 14 Dec 2013 12:23:14 +0000 (12:23 +0000)]
Remove weak vtables. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197323 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Stackmap] Liveness Analysis Pass
Juergen Ributzka [Sat, 14 Dec 2013 06:53:06 +0000 (06:53 +0000)]
[Stackmap] Liveness Analysis Pass

This optional register liveness analysis pass can be enabled with either
-enable-stackmap-liveness, -enable-patchpoint-liveness, or both. The pass
traverses each basic block in a machine function. For each basic block the
instructions are processed in reversed order and if a patchpoint or stackmap
instruction is encountered the current live-out register set is encoded as a
register mask and attached to the instruction.

Later on during stackmap generation the live-out register mask is processed and
also emitted as part of the stackmap.

This information is optional and intended for optimization purposes only. This
will enable a client of the stackmap to reason about the registers it can use
and which registers need to be preserved.

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197317 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Stackmap] Only the AnyReg calling convention should preserve all registers.
Juergen Ributzka [Sat, 14 Dec 2013 06:52:59 +0000 (06:52 +0000)]
[Stackmap] Only the AnyReg calling convention should preserve all registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197316 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoConvert register liveness tracking to work on a sub-register level instead of just...
Juergen Ributzka [Sat, 14 Dec 2013 06:52:56 +0000 (06:52 +0000)]
Convert register liveness tracking to work on a sub-register level instead of just register units.

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197315 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRefactor NVPTX's computeDataLayout.
Rafael Espindola [Sat, 14 Dec 2013 06:42:48 +0000 (06:42 +0000)]
Refactor NVPTX's computeDataLayout.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197312 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTurn NVPTXSubtarget::getDataLayout into a static function.
Rafael Espindola [Sat, 14 Dec 2013 06:36:30 +0000 (06:36 +0000)]
Turn NVPTXSubtarget::getDataLayout into a static function.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197311 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTurn AMDGPUSubtarget::getDataLayout into a static function.
Rafael Espindola [Sat, 14 Dec 2013 06:13:44 +0000 (06:13 +0000)]
Turn AMDGPUSubtarget::getDataLayout into a static function.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197310 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Rename getEntryFrequency() -> getEntryFreq() to match getBlockFreq(...
Michael Gottesman [Sat, 14 Dec 2013 02:37:38 +0000 (02:37 +0000)]
[block-freq] Rename getEntryFrequency() -> getEntryFreq() to match getBlockFreq() in all *BlockFrequencyInfo*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197304 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Teach branch probability how to return the edge weight in between a...
Michael Gottesman [Sat, 14 Dec 2013 02:24:25 +0000 (02:24 +0000)]
[block-freq] Teach branch probability how to return the edge weight in between a BasicBlock and one of its successors.

IMHO At some point BasicBlock should be refactored along the lines of
MachineBasicBlock so that successors/weights are actually embedded within the
block. Now is not that time though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197303 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Add a right shift to BlockFrequency that saturates at 1.
Michael Gottesman [Sat, 14 Dec 2013 02:24:22 +0000 (02:24 +0000)]
[block-freq] Add a right shift to BlockFrequency that saturates at 1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197302 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Remove old BlockFrequency entry frequency and printing code.
Michael Gottesman [Sat, 14 Dec 2013 00:57:18 +0000 (00:57 +0000)]
[block-freq] Remove old BlockFrequency entry frequency and printing code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197297 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Refactor LiveInterals::getSpillWeight to use the new MachineBlockFrequen...
Michael Gottesman [Sat, 14 Dec 2013 00:53:32 +0000 (00:53 +0000)]
[block-freq] Refactor LiveInterals::getSpillWeight to use the new MachineBlockFrequencyInfo methods.

This is slightly more interesting than the previous batch of changes.
Specifically:

1. We refactor getSpillWeight to take a MachineBlockFrequencyInfo (MBFI)
object. This enables us to completely encapsulate the actual manner we
use the MachineBlockFrequencyInfo to get our spill weights. This yields
cleaner code since one does not need to fetch the actual block frequency
before getting the spill weight if all one wants it the spill weight. It
also gives us access to entry frequency which we need for our
computation.

2. Instead of having getSpillWeight take a MachineBasicBlock (as one
might think) to look up the block frequency via the MBFI object, we
instead take in a MachineInstr object. The reason for this is that the
method is supposed to return the spill weight for an instruction
according to the comments around the function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197296 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Minor improvements to test.
Matt Arsenault [Sat, 14 Dec 2013 00:38:04 +0000 (00:38 +0000)]
R600/SI: Minor improvements to test.

Use CHECK-LABEL, add an i64 version, check store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197293 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTeach MemoryBuiltins about address spaces
Matt Arsenault [Sat, 14 Dec 2013 00:27:48 +0000 (00:27 +0000)]
Teach MemoryBuiltins about address spaces

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197292 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Store MBFI as a field on SpillPlacement so we can access it to get the...
Michael Gottesman [Sat, 14 Dec 2013 00:25:47 +0000 (00:25 +0000)]
[block-freq] Store MBFI as a field on SpillPlacement so we can access it to get the entry frequency while processing data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197291 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Update MachineBlockPlacement and RegAllocGreedy to use the new MachineBl...
Michael Gottesman [Sat, 14 Dec 2013 00:25:45 +0000 (00:25 +0000)]
[block-freq] Update MachineBlockPlacement and RegAllocGreedy to use the new MachineBlockFrequencyInfo methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197290 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Update BlockFrequencyInfo/MachineBlockFrequencyInfo to use the new print...
Michael Gottesman [Sat, 14 Dec 2013 00:25:42 +0000 (00:25 +0000)]
[block-freq] Update BlockFrequencyInfo/MachineBlockFrequencyInfo to use the new print methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197289 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPrint the address space of a MachineMemOperand
Matt Arsenault [Sat, 14 Dec 2013 00:24:02 +0000 (00:24 +0000)]
Print the address space of a MachineMemOperand

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197288 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Add the equivalent methods to MachineBlockFrequencyInfo and BlockFrequen...
Michael Gottesman [Sat, 14 Dec 2013 00:06:03 +0000 (00:06 +0000)]
[block-freq] Add the equivalent methods to MachineBlockFrequencyInfo and BlockFrequencyInfo that were added to BlockFrequencyImpl in r197285 and r197284.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197287 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Convert BlockFrequencyImpl to use the new printing functionality from...
Michael Gottesman [Sat, 14 Dec 2013 00:05:59 +0000 (00:05 +0000)]
[block-freq] Convert BlockFrequencyImpl to use the new printing functionality from r197285.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197286 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Add a print method on BlockFrequencyImpl for printing block frequencies...
Michael Gottesman [Fri, 13 Dec 2013 23:59:44 +0000 (23:59 +0000)]
[block-freq] Add a print method on BlockFrequencyImpl for printing block frequencies and a convenience method for the common case of getting/printing a basic block.

BlockFrequencies can only be printed relative to their entry frequency. Thus
since the entry frequency is no longer necessarily a static constant on the
BlockFrequency class and is instead a potentially dynamic value taken from
BlockFrequencyImpl, we must necessarily print it via a method on
BlockFrequencyImpl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197285 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Begin move of BlockFrequency::EntryFreq -> BlockFrequencyImpl::EntryFreq.
Michael Gottesman [Fri, 13 Dec 2013 23:44:36 +0000 (23:44 +0000)]
[block-freq] Begin move of BlockFrequency::EntryFreq -> BlockFrequencyImpl::EntryFreq.

This is a property associated with a function, not with BlockFrequency data.
Additionally it loosens the artifical requirement that the entry frequency
arbitrarily be the same for every function.

There is a series of patches forthcoming updating various code that uses the old
way of getting a block frequency to the new location.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197284 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPointer sizes are stored in Bytes. Fix variables names to say so.
Rafael Espindola [Fri, 13 Dec 2013 23:15:20 +0000 (23:15 +0000)]
Pointer sizes are stored in Bytes. Fix variables names to say so.

Also update for the current naming style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197283 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFixed a bug in getARMFixupKindMachOInfo() where three ARM fixup kinds
Kevin Enderby [Fri, 13 Dec 2013 22:46:54 +0000 (22:46 +0000)]
Fixed a bug in getARMFixupKindMachOInfo() where three ARM fixup kinds
were falling into the cases for 24-bit branch kinds which are not 24-bit
branches.  The routine is to return false for fixups are expected to always
be resolvable at assembly time. Which these three fixups are as they have
limited displacement and are for local references within a function.

rdar://15586725

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197282 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agocomment typo.
Andrew Trick [Fri, 13 Dec 2013 22:23:54 +0000 (22:23 +0000)]
comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197278 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove APInt::extractBit since it is already implemented via operator[]. Change tests...
Michael Gottesman [Fri, 13 Dec 2013 22:00:19 +0000 (22:00 +0000)]
Remove APInt::extractBit since it is already implemented via operator[]. Change tests for extractBit to test operator[].

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197277 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Move type units into the debug_types section with appropriate comdat group...
David Blaikie [Fri, 13 Dec 2013 21:33:40 +0000 (21:33 +0000)]
DebugInfo: Move type units into the debug_types section with appropriate comdat grouping and type unit headers

This commit does not complete the type units feature - there are issues
around fission support (skeletal type units, pubtypes/pubnames) and
hashing of some types including those containing references to types in
other type units.

Originally committed as r197073 and reverted in r197079.
Recommitted as r197197 to reproduce the failure and reverted as r197199

Turns out there was unstable ordering in the type unit dumping code.
Fixed by using MapVector in DWARFContext to store the debug_types
comdat sections.

Recommitted as r197210 with a fix to dumping and reverted as r197211
because I was a bit gun shy and thought I saw a failure that turned out
to be unrelated.

So here we go - once more with feeling! \o/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197275 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Add the method APInt::nearestLogBase2().
Michael Gottesman [Fri, 13 Dec 2013 20:47:37 +0000 (20:47 +0000)]
[block-freq] Add the method APInt::nearestLogBase2().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197272 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[block-freq] Add the APInt method extractBit.
Michael Gottesman [Fri, 13 Dec 2013 20:47:34 +0000 (20:47 +0000)]
[block-freq] Add the APInt method extractBit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197271 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Convert liveness tracking to work on a sub-register level instead of just...
Andrew Trick [Fri, 13 Dec 2013 19:04:08 +0000 (19:04 +0000)]
Revert "Convert liveness tracking to work on a sub-register level instead of just register units."

This reverts commit r197253.

This was a great change, but Juergen should be the commit author.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197262 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Liveness Analysis Pass"
Andrew Trick [Fri, 13 Dec 2013 18:57:20 +0000 (18:57 +0000)]
Revert "Liveness Analysis Pass"

This reverts commit r197254.

This was an accidental merge of Juergen's patch. It will be checked in
shortly, but wasn't meant to go in quite yet.

Conflicts:
include/llvm/CodeGen/StackMaps.h
lib/CodeGen/StackMaps.cpp
test/CodeGen/X86/stackmap-liveness.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197260 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse a: and s: instead of a0: and s0: in the DataLayout strings.
Rafael Espindola [Fri, 13 Dec 2013 18:56:34 +0000 (18:56 +0000)]
Use a: and s: instead of a0: and s0: in the DataLayout strings.

They are equivalent and the size of 'a' and 's' is unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197259 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGrow the stackmap/patchpoint format to hold 64-bit IDs.
Andrew Trick [Fri, 13 Dec 2013 18:37:10 +0000 (18:37 +0000)]
Grow the stackmap/patchpoint format to hold 64-bit IDs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197255 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoLiveness Analysis Pass
Andrew Trick [Fri, 13 Dec 2013 18:37:03 +0000 (18:37 +0000)]
Liveness Analysis Pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197254 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoConvert liveness tracking to work on a sub-register level instead of just register...
Andrew Trick [Fri, 13 Dec 2013 18:36:56 +0000 (18:36 +0000)]
Convert liveness tracking to work on a sub-register level instead of just register units.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197253 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[AArch64] Simplify the Neon Scalar3Same patterns for floating-point reciprocal
Chad Rosier [Fri, 13 Dec 2013 17:56:44 +0000 (17:56 +0000)]
[AArch64] Simplify the Neon Scalar3Same patterns for floating-point reciprocal
step, floating-point reciprocal square root step, floating-point absolute
difference, and integer/floating-point compare instructions.  Also, move the
scalar general arithmetic operation patterns closer to similar code.  No
functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197250 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAssume defaults to produce smaller datalayout strings.
Rafael Espindola [Fri, 13 Dec 2013 17:56:11 +0000 (17:56 +0000)]
Assume defaults to produce smaller datalayout strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197249 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix pr18235.
Rafael Espindola [Fri, 13 Dec 2013 16:05:32 +0000 (16:05 +0000)]
Fix pr18235.

The cpp backend is not a reasonable fallback for a missing target. It is a
very special backend, so it is reasonable to use it only if explicitly
requested.

While at it, simplify the interface a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197241 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Optimize X [!=]= Y in cases where X - Y or Y - X is also computed
Richard Sandiford [Fri, 13 Dec 2013 15:50:30 +0000 (15:50 +0000)]
[SystemZ] Optimize X [!=]= Y in cases where X - Y or Y - X is also computed

In those cases it's better to compare the result of the subtraction
against zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197239 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Make more use of TMHH
Richard Sandiford [Fri, 13 Dec 2013 15:46:55 +0000 (15:46 +0000)]
[SystemZ] Make more use of TMHH

This originally came about after noticing that InstCombine turns
some of the TMHH (icmp (and...), ...) tests into plain comparisons.
Since there is no instruction to compare with a 64-bit immediate,
TMHH is generally better than an ordered comparison for the cases
that it can handle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197238 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agotest commit.
Iain Sandoe [Fri, 13 Dec 2013 15:46:48 +0000 (15:46 +0000)]
test commit.
Amend a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197237 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Extend integer absolute selection
Richard Sandiford [Fri, 13 Dec 2013 15:35:00 +0000 (15:35 +0000)]
[SystemZ] Extend integer absolute selection

This patch makes more use of LPGFR and LNGFR.  It builds on top of
the LTGFR selection from r197234.  Most of the tests are motivated
by what InstCombine would produce.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197236 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Add a structure to represent a selected comparison
Richard Sandiford [Fri, 13 Dec 2013 15:28:45 +0000 (15:28 +0000)]
[SystemZ] Add a structure to represent a selected comparison

...in an attempt to rein back the increasingly complex selection code.
A knock-on effect is that ICmpType is exposed from the outset, which
slightly simplifies adjustSubwordCmp.

The code is no piece of art even after this change, but at least it should
be slightly better.  No behavioral change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197235 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Make more use of LTGFR
Richard Sandiford [Fri, 13 Dec 2013 15:07:39 +0000 (15:07 +0000)]
[SystemZ] Make more use of LTGFR

InstCombine turns (sext (trunc)) into (ashr (shl)), then converts any
comparison of the ashr against zero into a comparison of the shl against zero.
This makes sense in itself, but we want to undo it for z, since the sign-
extension instruction has a CC-setting form.

I've included tests for both the original and InstCombined variants,
but the former already worked.  The patch fixes the latter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197234 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoX86: When lowering shl_parts, don't emit shift amounts larger than the bit width.
Benjamin Kramer [Fri, 13 Dec 2013 13:40:24 +0000 (13:40 +0000)]
X86: When lowering shl_parts, don't emit shift amounts larger than the bit width.

While it's safe for the X86-specific shift nodes, dag combining will
kill generic nodes. Insert an AND to make it safe, isel will nuke it
as x86's shift instructions have an implicit AND.

Fixes PR16108, which contains a contraption to hit this case in between
constant folders.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197228 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoEnabling thumb2 mode used to force support for armv6t2. Replace this
Joerg Sonnenberger [Fri, 13 Dec 2013 11:16:00 +0000 (11:16 +0000)]
Enabling thumb2 mode used to force support for armv6t2. Replace this
with a temporary assertion and adjust the various test cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197224 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Add checks for alignment and maximum displacements for most of the
Matheus Almeida [Fri, 13 Dec 2013 11:11:02 +0000 (11:11 +0000)]
[mips] Add checks for alignment and maximum displacements for most of the
branch instructions for mips and micromips instruction sets thus avoiding
the situation of generating branches to undesired locations if offsets
cannot be encoded.

This patch also checks if a fixup cannot be applied and returns a fatal error
if that's the case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197223 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd ARM to release instructions
Renato Golin [Fri, 13 Dec 2013 09:39:36 +0000 (09:39 +0000)]
Add ARM to release instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197220 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[inliner] Fix PR18206 by preventing inlining functions that call setjmp
Chandler Carruth [Fri, 13 Dec 2013 08:00:01 +0000 (08:00 +0000)]
[inliner] Fix PR18206 by preventing inlining functions that call setjmp
through an invoke instruction.

The original patch for this was written by Mark Seaborn, but I've
reworked his test case into the existing returns_twice test case and
implemented the fix by the prior refactoring to actually run the cost
analysis over invoke instructions, and then here fixing our detection of
the returns_twice attribute to work for both calls and invokes. We never
noticed because we never saw an invoke. =[

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197216 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[inliner] Completely change (and fix) how the inline cost analysis
Chandler Carruth [Fri, 13 Dec 2013 07:59:56 +0000 (07:59 +0000)]
[inliner] Completely change (and fix) how the inline cost analysis
handles terminator instructions.

The inline cost analysis inheritted some pretty rough handling of
terminator insts from the original cost analysis, and then made it much,
much worse by factoring all of the important analyses into a separate
instruction visitor. That instruction visitor never visited the
terminator.

This works fine for things like conditional branches, but for many other
things we simply computed The Wrong Value. First example are
unconditional branches, which should be free but were counted as full
cost. This is most significant for conditional branches where the
condition simplifies and folds during inlining. We paid a 1 instruction
tax on every branch in a straight line specialized path. =[

Oh, we also claimed that the unreachable instruction had cost.

But it gets worse. Let's consider invoke. We never applied the call
penalty. We never accounted for the cost of the arguments. Nope. Worse
still, we didn't handle the *correctness* constraints of not inlining
recursive invokes, or exception throwing returns_twice functions. Oops.
See PR18206. Sadly, PR18206 requires yet another fix, but this
refactoring is at least a huge step in that direction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197215 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "DebugInfo: Move type units into the debug_types section with appropriate...
David Blaikie [Fri, 13 Dec 2013 06:43:32 +0000 (06:43 +0000)]
Revert "DebugInfo: Move type units into the debug_types section with appropriate comdat grouping and type unit headers"

This reverts commit r197210.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197211 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Move type units into the debug_types section with appropriate comdat group...
David Blaikie [Fri, 13 Dec 2013 06:27:38 +0000 (06:27 +0000)]
DebugInfo: Move type units into the debug_types section with appropriate comdat grouping and type unit headers

This commit does not complete the type units feature - there are issues
around fission support (skeletal type units, pubtypes/pubnames) and
hashing of some types including those containing references to types in
other type units.

Originally committed as r197073 and reverted in r197079.
Recommitted as r197197 to reproduce the failure and reverted as r197199

Turns out there was unstable ordering in the type unit dumping code.
Fixed by using MapVector in DWARFContext to store the debug_types
comdat sections.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197210 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoChange stack probing code for MingW.
Kai Nacke [Fri, 13 Dec 2013 05:37:05 +0000 (05:37 +0000)]
Change stack probing code for MingW.

Since gcc 4.6 the compiler uses ___chkstk_ms which has the same semantics as the
MS CRT function __chkstk. This simplifies the prologue generation a bit.

Reviewed by Rafael EspĂ­ndola.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197205 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoObject/COFF: ExportAddressTableEntry is a union of two RVAs.
Rui Ueyama [Fri, 13 Dec 2013 05:19:17 +0000 (05:19 +0000)]
Object/COFF: ExportAddressTableEntry is a union of two RVAs.

The previous definition was wrong. See Microsoft PE/COFF specification
section 5.3.2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197204 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "DebugInfo: Move type units into the debug_types section with appropriate...
David Blaikie [Fri, 13 Dec 2013 01:24:54 +0000 (01:24 +0000)]
Revert "DebugInfo: Move type units into the debug_types section with appropriate comdat grouping and type unit headers"

This reverts commit r197197.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197199 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Added -b option for branch probabilities.
Yuchen Wu [Fri, 13 Dec 2013 01:15:07 +0000 (01:15 +0000)]
llvm-cov: Added -b option for branch probabilities.

This option tells llvm-cov to print out branch probabilities when
a basic block contains multiple branches. It also prints out some
function summary info including the number of times the function enters,
the percent of time it returns, and how many blocks were executed.

Also updated tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197198 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Move type units into the debug_types section with appropriate comdat group...
David Blaikie [Fri, 13 Dec 2013 01:06:41 +0000 (01:06 +0000)]
DebugInfo: Move type units into the debug_types section with appropriate comdat grouping and type unit headers

This commit does not complete the type units feature - there are issues
around fission support (skeletal type units, pubtypes/pubnames) and
hashing of some types including those containing references to types in
other type units.

Originally committed as r197073 and reverted in r197079.

This commit originally got jumbled up with another build-breaking commit
and I can't find the failures I thought this caused anymore.
Recommitting to hopefully get some clean buildbot results to work from.
I have a sneaking suspicion there's unstable output in the comdat group
output of MCStreamer...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197197 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix spelling in comment in test: "themselve" -> "themselves"
Mark Seaborn [Thu, 12 Dec 2013 21:26:30 +0000 (21:26 +0000)]
Fix spelling in comment in test: "themselve" -> "themselves"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197180 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix a use-after-free error in GlobalOpt CleanupConstantGlobalUsers
Hal Finkel [Thu, 12 Dec 2013 20:45:24 +0000 (20:45 +0000)]
Fix a use-after-free error in GlobalOpt CleanupConstantGlobalUsers

GlobalOpt's CleanupConstantGlobalUsers function uses a worklist array to manage
constant users to be visited. The pointers in this array need to be weak
handles because when we delete a constant array, we may also be holding a
pointer to one of its elements (or an element of one of its elements if we're
dealing with an array of arrays) in the worklist.

Fixes PR17347.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197178 91177308-0d34-0410-b5e6-96231b3b80d8