diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | Makefile.rules | 17 | ||||
-rw-r--r-- | autoconf/configure.ac | 4 | ||||
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | docs/ReleaseNotes.rst | 29 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCCTRLoops.cpp | 8 | ||||
-rw-r--r-- | lib/Target/R600/AMDGPUCallingConv.td | 2 | ||||
-rw-r--r-- | test/CodeGen/PowerPC/ctrloop-sh.ll | 72 | ||||
-rw-r--r-- | tools/llvm-shlib/Makefile | 4 |
9 files changed, 133 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bd0f846f04..a6d25ea27f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ set(CMAKE_MODULE_PATH set(LLVM_VERSION_MAJOR 3) set(LLVM_VERSION_MINOR 4) -set(LLVM_VERSION_PATCH 1) +set(LLVM_VERSION_PATCH 2) if (NOT PACKAGE_VERSION) set(PACKAGE_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") diff --git a/Makefile.rules b/Makefile.rules index 210abdafc8..fde77f9acf 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -1027,8 +1027,9 @@ ifeq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) LLVMLibsOptions += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc \ -L $(SharedLibDir) endif -LLVMLibsOptions += -lLLVM-$(LLVMVersion) -LLVMLibsPaths += $(SharedLibDir)/$(SharedPrefix)LLVM-$(LLVMVersion)$(SHLIBEXT) +LLVM_SO_NAME = LLVM-$(LLVM_VERSION_MAJOR).$(LLVM_VERSION_MINOR)$(LLVM_VERSION_SUFFIX) +LLVMLibsOptions += -l$(LLVM_SO_NAME) +LLVMLibsPaths += $(SharedLibDir)/$(SharedPrefix)$(LLVM_SO_NAME)$(SHLIBEXT) else ifndef NO_LLVM_CONFIG @@ -1144,7 +1145,12 @@ LibName.O := $(LibDir)/$(LIBRARYNAME).o #--------------------------------------------------------- ifdef SHARED_LIBRARY -all-local:: $(LibName.SO) +all-local:: $(AliasName.SO) + +$(AliasName.SO): $(LibName.SO) +ifdef SHARED_ALIAS + $(Verb) $(AliasTool) $(BaseLibName.SO) $(AliasName.SO) +endif ifdef EXPORTED_SYMBOL_FILE $(LibName.SO): $(NativeExportsFile) @@ -1196,12 +1202,15 @@ $(DestSharedLib): $(LibName.SO) $(DestSharedLibDir) $(Verb) $(INSTALL) $(LibName.SO) $(DestSharedLib) ifdef SHARED_ALIAS $(Echo) Creating alias from $(DestSharedLib) to $(DestSharedAlias) - $(Verb) $(AliasTool) $(DestSharedLib) $(DestSharedAlias) + $(Verb) $(AliasTool) $(BaseLibName.SO) $(DestSharedAlias) endif uninstall-local:: $(Echo) Uninstalling $(BuildMode) Shared Library $(DestSharedLib) -$(Verb) $(RM) -f $(DestSharedLib) +ifdef SHARED_ALIAS + -$(Verb) $(RM) -f $(DestSharedAlias) +endif endif endif diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 6a9718844d..26f184e36a 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -32,11 +32,11 @@ dnl===-----------------------------------------------------------------------=== dnl Initialize autoconf and define the package name, version number and dnl address for reporting bugs. -AC_INIT([LLVM],[3.4.1],[http://llvm.org/bugs/]) +AC_INIT([LLVM],[3.4.2],[http://llvm.org/bugs/]) LLVM_VERSION_MAJOR=3 LLVM_VERSION_MINOR=4 -LLVM_VERSION_PATCH=1 +LLVM_VERSION_PATCH=2 LLVM_VERSION_SUFFIX= AC_DEFINE_UNQUOTED([LLVM_VERSION_MAJOR], $LLVM_VERSION_MAJOR, [Major version of the LLVM API]) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.60 for LLVM 3.4.1. +# Generated by GNU Autoconf 2.60 for LLVM 3.4.2. # # Report bugs to <http://llvm.org/bugs/>. # @@ -561,8 +561,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='LLVM' PACKAGE_TARNAME='llvm' -PACKAGE_VERSION='3.4.1' -PACKAGE_STRING='LLVM 3.4.1' +PACKAGE_VERSION='3.4.2' +PACKAGE_STRING='LLVM 3.4.2' PACKAGE_BUGREPORT='http://llvm.org/bugs/' ac_unique_file="lib/IR/Module.cpp" @@ -1334,7 +1334,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures LLVM 3.4.1 to adapt to many kinds of systems. +\`configure' configures LLVM 3.4.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1400,7 +1400,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of LLVM 3.4.1:";; + short | recursive ) echo "Configuration of LLVM 3.4.2:";; esac cat <<\_ACEOF @@ -1578,7 +1578,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -LLVM configure 3.4.1 +LLVM configure 3.4.2 generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1594,7 +1594,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by LLVM $as_me 3.4.1, which was +It was created by LLVM $as_me 3.4.2, which was generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -1950,7 +1950,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu LLVM_VERSION_MAJOR=3 LLVM_VERSION_MINOR=4 -LLVM_VERSION_PATCH=1 +LLVM_VERSION_PATCH=2 LLVM_VERSION_SUFFIX= @@ -22861,7 +22861,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by LLVM $as_me 3.4.1, which was +This file was extended by LLVM $as_me 3.4.2, which was generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22914,7 +22914,7 @@ Report bugs to <bug-autoconf@gnu.org>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -LLVM config.status 3.4.1 +LLVM config.status 3.4.2 configured by $0, generated by GNU Autoconf 2.60, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst index 94663c4aa0..9c1843d77b 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -1,6 +1,6 @@ -====================== -LLVM 3.4 Release Notes -====================== +======================== +LLVM 3.4.1 Release Notes +======================== .. contents:: :local: @@ -25,8 +25,27 @@ LLVM web page, this document applies to the *next* release, not the current one. To see the release notes for a specific release, please see the `releases page <http://llvm.org/releases/>`_. -Non-comprehensive list of changes in this release -================================================= +Changes in 3.4.2 +================ + +* libLLVM-3.4.so soname fix. + +* PowerPC: Fix for 128-bit shifts. + +* R600: Shader calling convention fix. + + +Non-comprehensive list of changes in 3.4.1 +========================================== + +* Various bug fixes for AArch64, ARM, PowerPC, R600, and X86 targets. + +* R600 geometry shader support + +* Fix for vaargs on X86 + +Non-comprehensive list of changes in 3.4 +======================================== * This is expected to be the last release of LLVM which compiles using a C++98 toolchain. We expect to start using some C++11 features in LLVM and other diff --git a/lib/Target/PowerPC/PPCCTRLoops.cpp b/lib/Target/PowerPC/PPCCTRLoops.cpp index e419b9b40d..819635c5d8 100644 --- a/lib/Target/PowerPC/PPCCTRLoops.cpp +++ b/lib/Target/PowerPC/PPCCTRLoops.cpp @@ -369,6 +369,14 @@ bool PPCCTRLoops::mightUseCTR(const Triple &TT, BasicBlock *BB) { J->getOpcode() == Instruction::URem || J->getOpcode() == Instruction::SRem)) { return true; + } else if (TT.isArch32Bit() && + isLargeIntegerTy(false, J->getType()->getScalarType()) && + (J->getOpcode() == Instruction::Shl || + J->getOpcode() == Instruction::AShr || + J->getOpcode() == Instruction::LShr)) { + // Only on PPC32, for 128-bit integers (specifically not 64-bit + // integers), these might be runtime calls. + return true; } else if (isa<IndirectBrInst>(J) || isa<InvokeInst>(J)) { // On PowerPC, indirect jumps use the counter register. return true; diff --git a/lib/Target/R600/AMDGPUCallingConv.td b/lib/Target/R600/AMDGPUCallingConv.td index 65cdb24673..5f8ad8c3b1 100644 --- a/lib/Target/R600/AMDGPUCallingConv.td +++ b/lib/Target/R600/AMDGPUCallingConv.td @@ -20,7 +20,7 @@ def CC_SI : CallingConv<[ CCIfInReg<CCIfType<[f32, i32] , CCAssignToReg<[ SGPR0, SGPR1, SGPR2, SGPR3, SGPR4, SGPR5, SGPR6, SGPR7, SGPR8, SGPR9, SGPR10, SGPR11, SGPR12, SGPR13, SGPR14, SGPR15, - SGPR16 + SGPR16, SGPR17, SGPR18, SGPR19, SGPR20, SGPR21 ]>>>, CCIfInReg<CCIfType<[i64] , CCAssignToRegWithShadow< diff --git a/test/CodeGen/PowerPC/ctrloop-sh.ll b/test/CodeGen/PowerPC/ctrloop-sh.ll new file mode 100644 index 0000000000..d8e6fc79a6 --- /dev/null +++ b/test/CodeGen/PowerPC/ctrloop-sh.ll @@ -0,0 +1,72 @@ +; RUN: llc < %s | FileCheck %s +target datalayout = "E-m:e-p:32:32-i128:64-n32" +target triple = "powerpc-ellcc-linux" + +; Function Attrs: nounwind +define void @foo1(i128* %a, i128* readonly %b, i128* readonly %c) #0 { +entry: + br label %for.body + +for.body: ; preds = %for.body, %entry + %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] + %0 = load i128* %b, align 16 + %1 = load i128* %c, align 16 + %shl = shl i128 %0, %1 + store i128 %shl, i128* %a, align 16 + %inc = add nsw i32 %i.02, 1 + %exitcond = icmp eq i32 %inc, 2048 + br i1 %exitcond, label %for.end, label %for.body + +for.end: ; preds = %for.body + ret void + +; CHECK-LABEL: @foo1 +; CHECK-NOT: mtctr +} + +; Function Attrs: nounwind +define void @foo2(i128* %a, i128* readonly %b, i128* readonly %c) #0 { +entry: + br label %for.body + +for.body: ; preds = %for.body, %entry + %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] + %0 = load i128* %b, align 16 + %1 = load i128* %c, align 16 + %shl = ashr i128 %0, %1 + store i128 %shl, i128* %a, align 16 + %inc = add nsw i32 %i.02, 1 + %exitcond = icmp eq i32 %inc, 2048 + br i1 %exitcond, label %for.end, label %for.body + +for.end: ; preds = %for.body + ret void + +; CHECK-LABEL: @foo2 +; CHECK-NOT: mtctr +} + +; Function Attrs: nounwind +define void @foo3(i128* %a, i128* readonly %b, i128* readonly %c) #0 { +entry: + br label %for.body + +for.body: ; preds = %for.body, %entry + %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] + %0 = load i128* %b, align 16 + %1 = load i128* %c, align 16 + %shl = lshr i128 %0, %1 + store i128 %shl, i128* %a, align 16 + %inc = add nsw i32 %i.02, 1 + %exitcond = icmp eq i32 %inc, 2048 + br i1 %exitcond, label %for.end, label %for.body + +for.end: ; preds = %for.body + ret void + +; CHECK-LABEL: @foo3 +; CHECK-NOT: mtctr +} + +attributes #0 = { nounwind } + diff --git a/tools/llvm-shlib/Makefile b/tools/llvm-shlib/Makefile index 4a0c2ea68d..b912ea6779 100644 --- a/tools/llvm-shlib/Makefile +++ b/tools/llvm-shlib/Makefile @@ -9,8 +9,8 @@ LEVEL := ../.. -LIBRARYNAME = LLVM-$(LLVMVersion) -LIBRARYALIASNAME = LLVM-$(LLVM_VERSION_MAJOR).$(LLVM_VERSION_MINOR)$(LLVM_VERSION_SUFFIX) +LIBRARYNAME = LLVM-$(LLVM_VERSION_MAJOR).$(LLVM_VERSION_MINOR)$(LLVM_VERSION_SUFFIX) +LIBRARYALIASNAME = LLVM-$(LLVMVersion) NO_BUILD_ARCHIVE := 1 LINK_LIBS_IN_SHARED := 1 |