Displaying 1 50 of 186,254 commits (0.012s)

LLVM — cfe/trunk/include/clang/Lex Preprocessor.h, cfe/trunk/lib/Lex PPDirectives.cpp PPExpressions.cpp

Use enumerators instead of hardcoded integers when processing macro names.

LLVM — llvm/trunk/include/llvm/Target TargetLowering.h, llvm/trunk/lib/CodeGen/SelectionDAG DAGCombiner.cpp

Use rsqrt (X86) to speed up reciprocal square root calcs

This is a first step for generating SSE rsqrt instructions for
reciprocal square root calcs when fast-math is allowed.

For now, be conservative and only enable this for AMD btver2
where performance improves significantly - for example, 29%
on llvm/projects/test-suite/SingleSource/Benchmarks/BenchmarkGame/n-body.c
(if we convert the data type to single-precision float).

This patch adds a two constant version of the Newton-Raphson
refinement algorithm to DAGCombiner that can be selected by any target
via a parameter returned by getRsqrtEstimate()..

See PR20900 for more details:

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

LLVM — cfe/trunk/lib/Serialization ModuleManager.cpp

[Modules] Free modules that failed signature verification.

The control flow and ownership is weird enough so unique_ptr doesn't help here :(

LLVM — llvm/trunk/lib/Target/Mips MipsABIInfo.h MipsSubtarget.h

[mips] Replace MipsABIEnum with a MipsABIInfo class.

No functional change yet, it's just an object replacement for an enum.
It will allow us to gather ABI information in a single place so that we can
start testing for properties of the ABI's instead of the ABI itself.

For example we will eventually be able to use:
instead of:
  (isABI_N32() || isABI_N64()) ? 16 : 8
which is clearer and more maintainable.

Reviewers: matheusalmeida

Reviewed By: matheusalmeida

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

LLVM — llvm/trunk/lib/Object MachOObjectFile.cpp

[Object] Fix MachO's getUuid to return a pointer into the object instead of a dangling 

This works because uuid's are always little endian so it's not swapped.
Fixes use-after-return reported by asan.

LLVM — cfe/trunk/lib/CodeGen TargetInfo.cpp, cfe/trunk/test/CodeGen mips-vector-arg.c mips64-padding-arg.c

[mips] Mark aggregate arguments passed in registers with the inreg attribute

This allows us to easily identify them in the backend which in turn allows us
to handle them correctly for big-endian targets (where they must be shifted
into the upper bits of the register).

Depends on D5961

Reviewers: atanasyan

Reviewed By: atanasyan

Subscribers: cfe-commits, theraven

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

LLVM — llvm/trunk/include/llvm/Analysis RegionInfo.h DominanceFrontier.h

These functions are not actually defined for NDEBUG or !LLVM_DUMP_ENABLED, so guarding the 
declarations as well. NFC, silences MSVC warnings in release builds.

LLVM — llvm/trunk/lib/Target/Mips MipsCallingConv.td

[mips] Fix >80-column line

LLVM — cfe/trunk/lib/CodeGen TargetInfo.cpp, cfe/trunk/test/CodeGen mips64-padding-arg.c mips-vector-arg.c

[mips] Promote all integral/enumeration types to the GPR width

Ensure all integral/enumeration types are appropriately annotated with
signext/zeroext. In particular, i32 now has these attributes when using the
N32/N64 ABI. This paves the way for accurately representing the way the
N32/N64 ABI's promotes integer arguments to i64.

Reviewers: atanasyan

Reviewed By: atanasyan

Subscribers: cfe-commits, theraven

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

LLVM — cfe/trunk/include/clang/AST TypeLoc.h, cfe/trunk/lib/AST TypeLoc.cpp

Fix initializing TypeOfTypeLoc

This fixes a crash in the RecursiveASTVisitor on such code
 __typeof__(struct F*) var[invalid];

The UnderlyingTInfo of a TypeOfTypeLoc was left uninitialized when
created from ASTContext::getTrivialTypeSourceInfo
This lead to a crash in RecursiveASTVisitor when trying to access it.

LLVM — llvm/trunk/lib/Target/Mips MipsCallingConv.td

[mips] Remove redundant code in RetCC_MipsN. NFC.

i32 is always promoted to i64 so it no longer makes sense to assign i32 to

Reviewers: vmedic

Reviewed By: vmedic

Subscribers: llvm-commits

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

LLVM — cfe/trunk/lib/ASTMatchers ASTMatchersInternal.cpp

ASTMatchers: Peel off a layer of indirection from true matcher. NFC.

LLVM — cfe/trunk/include/clang/ASTMatchers ASTMatchersInternal.h ASTMatchers.h, cfe/trunk/lib/ASTMatchers ASTMatchersInternal.cpp

ASTMatchers: for-rangify loops. No functionality change.

LLVM — cfe/trunk/include/clang/AST ExprCXX.h

Add arguments() to CXXConstructExpr so the same interface as with CallExpr can be used.

LLVM — cfe/trunk/lib/Sema AnalysisBasedWarnings.cpp, cfe/trunk/test/SemaCXX return-noreturn.cpp

Report when a function-try-block does not return a value on all control paths. Fixed 

LLVM — llvm/trunk/lib/Target/Mips MipsCallingConv.td, llvm/trunk/test/CodeGen/Mips/cconv return-struct.ll

[mips] For N32/N64, structs must be passed in the upper bits of a register.

Most structs were fixed by r218451 but those of between >32-bits and
<64-bits remained broken since they were not marked with [ASZ]ExtUpper.
This patch fixes the remaining cases by using
CCPromoteToUpperBitsInType<i64> on i64's in addition to i32 and smaller.

Reviewers: vmedic

Reviewed By: vmedic

Subscribers: llvm-commits

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

LLVM — cfe/trunk/lib/Driver Tools.cpp, cfe/trunk/test/Lexer wchar-signedness.c

[Thumb] Clang thinks "char" is signed when using a thumb triple

'char' is unsigned on all ARM and Thumb architectures. Clang gets this
right for ARM, and for thumb when using and arm triple and the -mthumb
option, but gets it wrong for thumb triples. This fixes that.

LLVM — llvm/trunk/lib/Target/AArch64 AArch64FastISel.cpp, llvm/trunk/test/CodeGen/AArch64 fast-isel-cbz.ll

[AArch64] Fix fast-isel of cbz of i1, i8, i16

This fixes a miscompilation in the AArch64 fast-isel which was
triggered when a branch is based on an icmp with condition eq or ne,
and type i1, i8 or i16. The cbz instruction compares the whole 32-bit
register, so values with the bottom 1, 8 or 16 bits clear would cause
the wrong branch to be taken.

LLVM — cfe/trunk/lib/Rewrite CMakeLists.txt

[CMake] clangRewrite: Roll back clangAST in libdeps, due to clang::Stmt::printPretty().

LLVM — llvm/trunk/test/MC/ARM coff-debugging-secrel.ll

Update test/MC/ARM/coff-debugging-secrel.ll expectations to fix breakage caused by r220544

LLVM — cfe/trunk/lib/Driver CrossWindowsToolChain.cpp

Driver: add missed file from previous commit

LLVM — cfe/trunk/lib/Driver Tools.cpp ToolChains.h, cfe/trunk/test/Driver windows-cross.c

Driver: add CrossWindowsToolChain

This is a very basic toolchain.  It supports cross-compiling Windows (primarily
inspired by the WoA target).  It is meant to use clang with the LLVM IAS and a
binutils ld-compatible interface for the linker (eventually to be lld).  It does
not perform any "standard" GCC lookup, nor does it perform any special
adjustments given that it is expected to be used in an environment where the
user is using MSVCRT (and as such Visual Studio headers) and the Windows SDK.
The primary runtime library is expected to be compiler-rt and the C++
implementation to be libc++.

It also expects that a sysroot has been setup given the usual Unix semantics
(standard C headers in /usr/include, all the import libraries available in
/usr/lib).  It also expects that an entry point stub is present in /usr/lib
(crtbegin.obj for executables, crtbeginS.obj for shared libraries).

The entry point stub is responsible for running any GNU constructors.

LLVM — llvm/trunk/lib/CodeGen LiveDebugVariables.cpp

Added reset of LexicalScope in LiveDebugVariables reset function.

LLVM — llvm/trunk/lib/CodeGen/AsmPrinter WinCodeViewLineTables.cpp, llvm/trunk/test/DebugInfo/COFF multifunction.ll simple.ll

Fix PR21189 -- Emit symbol subsection required to debug LLVM-built binaries with VS2012+

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

LLVM — cfe/trunk/include/clang/Driver CC1Options.td, cfe/trunk/include/clang/Frontend CodeGenOptions.def

Add a new -fmerge-functions -cc1 flag that enables function merging.

LLVM — llvm/trunk/lib/CodeGen/AsmPrinter DwarfDebug.cpp DwarfFile.cpp

DebugInfo: Remove DwarfDebug::addScopeVariable now that it's just a trivial wrapper

LLVM — llvm/trunk/test/CodeGen/AArch64 fpconv-vector-op-scalarize.ll

Make test for r220533 more robust by using GPR pattern.

LLVM — llvm/trunk/lib/Target/X86 X86InstrAVX512.td, llvm/trunk/test/MC/X86 avx512-encodings.s

[AVX512] FMA support for the 231 variants

This is asm/diasm-only support, similar to AVX.

For ISeling the register variant, they are no different from 213 other than
whether the multiplication or the addition operand is destructed.

For ISeling the memory variant, i.e. to fold a load, they are no different
than the 132 variant.  The addition operand (op3) in both cases can come from
memory.  Again the ony difference is which operand is destructed.

There could be a post-RA pass that would convert a 213 or 132 into a 231.

Part of <rdar://problem/17082571>

LLVM — llvm/trunk/lib/Target/X86 X86InstrAVX512.td

[AVX512] Introduce fma3p_forms from AVX

This multiclass generates the different forms: 213, 231, 132 in AVX.

132 in AVX512 is a separate class but I am planning to use this same
multiclass to generate 231 relying on the nice the null_frag trick from AVX to
disable codegen pattern for 231.

No functionality change, no change in X86.td.expanded except for the different
instruction definition names.

LLVM — llvm/trunk/lib/Transforms/IPO PassManagerBuilder.cpp

If requested, apply function merging at -O0 too. It's useful there to reduce the time to 

LLVM — llvm/trunk/include/llvm/IR DebugInfo.h, llvm/trunk/lib/IR DebugInfo.cpp

Make getDISubprogram(const Function *F) available in LLVM

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

LLVM — libcxx/trunk/test lit.cfg

Change uses of `sys.platform == 'linux2' to `sys.platform.startswith('linux')

Although the current method is valid up till python 3.3 (which is not supported)
this seems to be a clearer way of checking for linux and moves the tests towards
python 3 compatibility.
Delta File
+3 -3 libcxx/trunk/test/lit.cfg
+3 -3 1 file

LLVM — llvm/trunk/lib/CodeGen/SelectionDAG LegalizeVectorTypes.cpp, llvm/trunk/test/CodeGen/AArch64 fpconv-vector-op-scalarize.ll

[SelectionDAG] Teach the vector scalarizer about FP conversions.

This adds support for legalization of instructions of the form:

  [fp_conv] <1 x i1> %op to <1 x double>

where fp_conv is one of fpto[us]i, [us]itofp.  This used to assert
because they were simply missing from the vector operand scalarizer.

A similar problem arose in r190830, with trunc instead.

Fixes PR20778.

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

LLVM — cfe/trunk/lib/CodeGen CGVTables.cpp, cfe/trunk/test/CodeGenCXX dllimport.cpp

Don't emit strong vtable definitions for imported classes with key functions (PR21355)

Clang would previously assert on the following code when targeting MinGW:

  struct __declspec(dllimport) S {
      virtual ~S();
  S::~S() {}

Because ~S is a key function and the class is dllimport, we would try to emit a
strong definition of the vtable, with dllimport - which is a conflict. We
should not emit strong vtable definitions for imported classes.

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

LLVM — llvm/trunk/lib/CodeGen/SelectionDAG LegalizeVectorTypes.cpp

Update comment and fix typos in assert message. (NFC)

LLVM — llvm/trunk/docs LangRef.rst

Update llvm.donothing documentation.

llvm.donothing is no longer the only intrinsic that can be invoked.
Delta File
+3 -2 llvm/trunk/docs/LangRef.rst
+3 -2 1 file

LLVM — llvm/trunk/lib/CodeGen/SelectionDAG ScheduleDAGRRList.cpp ScheduleDAGFast.cpp, llvm/trunk/test/CodeGen/X86 cmpxchg-clobber-flags.ll

ScheduleDAG: record PhysReg dependencies represented by CopyFromReg nodes

x86's CMPXCHG -> EFLAGS consumer wasn't being recorded as a real EFLAGS
dependency because it was represented by a pair of CopyFromReg(EFLAGS) ->
CopyToReg(EFLAGS) nodes. ScheduleDAG was expecting the source to be an
implicit-def on the instruction, where the result numbers in the DAG and the
Uses list in TableGen matched up precisely.

The Copy notation seems much more robust, so this patch extends ScheduleDAG
rather than refactoring x86.

Should fix PR20376.

LLVM — llvm/trunk/lib/CodeGen/AsmPrinter DwarfCompileUnit.cpp DwarfFile.cpp, llvm/trunk/test/DebugInfo varargs.ll

DebugInfo: Remove DwarfDebug::CurrentFnArguments since we have to handle argument ordering 
of other arguments (abstract arguments) in the same way and already have code for that 

While refactoring this code I was confused by both the name I had
introduced (addNonArgumentVariable... but it has all this logic to
handle argument numbering and keep things in order?) and by the
redundancy. Seems when I fixed the misordered inlined argument handling,
I didn't realize it was mostly redundant with the argument ordering code
(which I may've also written, I'm not sure). So let's just rely on the
more general case.

The only oddity in output this produces is that it means when we emit
all the variables for the current function, we don't track when we've
finished the argument variables and are about to start the local
variables and insert DW_AT_unspecified_parameters (for varargs
functions) there. Instead it ends up after the local variables, scopes,
etc. But this isn't invalid and doesn't cause DWARF consumers problems
that I know of... so we'll just go with that because it makes the code
nice & simple.

(though, let's see what the buildbots have to say about this - *crosses

There will be some cleanup commits to follow to remove the now trivial
wrappers, etc.

LLVM — llvm/trunk/include/llvm/Support COFF.h, llvm/trunk/test/tools/llvm-readobj codeview-linetables.test

PR21189: Teach llvm-readobj to dump bits of COFF symbol subsections required to debug 
using VS2012+

Reviewed at http://reviews.llvm.org/D5755
Thanks to Andrey Guskov for his help investigating this!

LLVM — cfe/trunk/include/clang/Basic DiagnosticFrontendKinds.td DiagnosticGroups.td, cfe/trunk/include/clang/Frontend SerializedDiagnosticPrinter.h

Driver: Include driver diagnostics when we --serialize-diagnostics

Currently, when --serialize-diagnostics is passed this only includes
the diagnostics from clang -cc1, and driver diagnostics are
dropped. This causes issues for tools that use the serialized
diagnostics, since stderr is lost and these diagnostics aren't seen at

We handle this by merging the diagnostics from the CC1 process and the
driver diagnostics into a single file when the driver invokes CC1.

Fixes rdar://problem/10585062

LLVM — cfe/trunk/lib/Serialization ASTReader.cpp

[modules] Simplify reading of INPUT_FILE_OFFSETS record and make it robust against changes 
to record order.

LLVM — cfe/trunk/lib/Serialization ASTReader.cpp

Factor out common checks from module map deserialization. No functionality change.
Delta File
+17 -110 cfe/trunk/lib/Serialization/ASTReader.cpp
+17 -110 1 file

LLVM — llvm/trunk/lib/CodeGen/AsmPrinter DwarfDebug.cpp DwarfFile.cpp

DebugInfo: Sink DwarfDebug::addNonArgumentScopeVariable into DwarfFile.

LLVM — llvm/trunk/tools/llvm-objdump MachODump.cpp

MachODump.cpp: fix MSVC build

LLVM — llvm/trunk/lib/Target/X86 X86ISelDAGToDAG.cpp X86ISelLowering.cpp, llvm/trunk/test/CodeGen/X86 xaluo.ll i8-umulo.ll

[X86] Improve mul w/ overflow codegen, to MUL8+SETO.

Currently, @llvm.smul.with.overflow.i8 expands to 9 instructions, where
3 are really needed.

This adds X86ISD::UMUL8/SMUL8 SD nodes, and custom lowers them to

i8 is a special case because there is no two/three operand variants of
(I)MUL8, so the first operand and return value need to go in AL/AX.

Also, we can't write patterns for these instructions: TableGen refuses
patterns where output operands don't match SDNode results. In this case,
instructions where the output operand is an implicitly defined register.

A related special case (and FIXME) exists for MUL8 (X86InstrArith.td):

  // FIXME: Used for 8-bit mul, ignore result upper 8 bits.
  // This probably ought to be moved to a def : Pat<> if the
  // syntax can be accepted.
  [(set AL, (mul AL, GR8:$src)), (implicit EFLAGS)]

Ideally, these go away with UMUL8, but we still need to improve TableGen
support of implicit operands in patterns.

    [20 lines not shown]

LLVM — llvm/trunk/lib/CodeGen/AsmPrinter DwarfDebug.h

DebugInfo: Remove DwarfDebug::addCurrentFnArgument declaration now that it's moved to 

LLVM — llvm/trunk/lib/Transforms/InstCombine InstCombineCasts.cpp, llvm/trunk/lib/Transforms/Utils SimplifyLibCalls.cpp

Handle sqrt() shrinking in SimplifyLibCalls like any other call

This patch removes a chunk of special case logic for folding 
(float)sqrt((double)x) -> sqrtf(x)
in InstCombineCasts and handles it in the mainstream path of SimplifyLibCalls.

No functional change intended, but I loosened the restriction on the existing
sqrt testcases to allow for this optimization even without unsafe-fp-math because
that's the existing behavior.

I also added a missing test case for not shrinking the llvm.sqrt.f64 intrinsic
in case the result is used as a double.

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

LLVM — lldb/trunk/test/functionalities/type_completion TestTypeCompletion.py main.cpp

This test case should not rely on stepping behavior because that might chance due to 
inlining. Set breakpoints where you want them instead. Fixes rdar://18724175

LLVM — libcxx/trunk/test/localization/locale.categories/category.collate/locale.collate.byname compare.pass.cpp, libcxx/trunk/test/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members get_long_double_zh_CN.pass.cpp

[libcxx] XFAIL all currently failing libc++ tests for linux.

Pretty please? We now have a significant number of builders that test libc++. I really 
want those builders to be green.
Most of these failures are due to differences in locale data, including those in regex. I 
will continue working on fixing the locale and regex tests but there is no consensus on 
what the correct direction to go. 

Since the builders display a list of XFAIL tests they are by no means hidden. It just 
means they are expected failures. Now unexpected failures won't get mixed in with well 
known and expected failures.

Reviewers: mclow.lists, jroelofs, danalbert

Reviewed By: danalbert

Subscribers: cfe-commits

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

LLVM — lldb/trunk/source/API SBType.cpp, lldb/trunk/test/python_api sbtype_typeclass

Fix a problem where an SBType was advertising its static type class even though a dynamic 
type was available. Solves rdar://18744420