aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-07-07 02:36:18 -0400
committerMark H Weaver <mhw@netris.org>2015-07-09 03:30:27 -0400
commit92f1b4a54c58d57bcc8d52e6970785c2b895c6b9 (patch)
tree4af36c76344697c081199388ce5eab0708a06764 /gnu/packages
parent549381d6db229a440cd48158015c760891bbb238 (diff)
downloadguix-92f1b4a54c58d57bcc8d52e6970785c2b895c6b9.tar.gz
guix-92f1b4a54c58d57bcc8d52e6970785c2b895c6b9.zip
gnu: Add gst-plugins-ugly.
* gnu/packages/gstreamer.scm (gst-plugins-ugly): New variable.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/gstreamer.scm39
1 files changed, 39 insertions, 0 deletions
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 0f3a0fbdf0..d7296e586b 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -243,6 +243,45 @@ GStreamer multimedia library. This set contains those plug-ins which the
developers consider to have good quality code and correct functionality.")
(license lgpl2.0+)))
+(define-public gst-plugins-ugly
+ (package
+ (name "gst-plugins-ugly")
+ (version "1.4.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://gstreamer.freedesktop.org/src/"
+ name "/" name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0rwhljn3f8mp2pfchzfcx4pvps1546dndw9mr56lz50qyqffimaw"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("gst-plugins-base" ,gst-plugins-base)
+ ("liba52" ,liba52)
+ ("libmad" ,libmad)
+ ("lame" ,lame)
+ ("libcdio" ,libcdio)
+ ("twolame" ,twolame)
+ ("libmpeg2" ,libmpeg2)
+ ("libdvdread" ,libdvdread)
+ ("libx264" ,libx264)
+ ;; TODO:
+ ;; * opencore-amr (for the AMR-NB decoder and encoder and the
+ ;; AMR-WB decoder) <http://sourceforge.net/projects/opencore-amr/>
+ ("orc" ,orc)))
+ (native-inputs
+ `(("glib:bin" ,glib "bin")
+ ("pkg-config" ,pkg-config)
+ ("python-wrapper" ,python-wrapper)))
+ (home-page "http://gstreamer.freedesktop.org/")
+ (synopsis
+ "GStreamer plugins from the \"ugly\" set.")
+ (description "GStreamer Ugly Plug-ins. This set contains those plug-ins
+which the developers consider to have good quality code but that might pose
+distribution problems in some jurisdictions, e.g. due to patent threats.")
+ (license lgpl2.0+)))
+
(define-public gst-libav
(package
(name "gst-libav")
class='ctx'> (base32
- "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))))))
+ "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))
+ (patch-flags '("-p2"))
+ (patches (search-patches
+ "llvm-9-fix-scev-miscompilation.patch"
+ "llvm-9-fix-lpad-miscompilation.patch"))))))
(define-public clang-runtime-9
(clang-runtime-from-llvm
diff --git a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
new file mode 100644
index 0000000000..6cfe07e50a
--- /dev/null
+++ b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
@@ -0,0 +1,97 @@
+From 011fb5bf8b31316472fccb1a19c91912246df9b2 Mon Sep 17 00:00:00 2001
+From: Reid Kleckner <rnk@google.com>
+Date: Sat, 28 Mar 2020 11:03:14 -0700
+Subject: [PATCH] [CodeGen] Fix sinking local values in lpads with phis
+
+There was already a test case for landingpads to handle this case, but I
+had forgotten to consider PHI instructions preceding the EH_LABEL in the
+landingpad.
+
+PR45261
+---
+ llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 17 +++++++++-
+ llvm/test/CodeGen/X86/sink-local-value.ll | 36 ++++++++++++++++++++++
+ 2 files changed, 52 insertions(+), 1 deletion(-)
+
+diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
+index 5ac3606dc662..2638b1e8a05c 100644
+--- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
++++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
+@@ -225,6 +225,21 @@ static bool isRegUsedByPhiNodes(unsigned DefReg,
+ return false;
+ }
+
++static bool isTerminatingEHLabel(MachineBasicBlock *MBB, MachineInstr &MI) {
++ // Ignore non-EH labels.
++ if (!MI.isEHLabel())
++ return false;
++
++ // Any EH label outside a landing pad must be for an invoke. Consider it a
++ // terminator.
++ if (!MBB->isEHPad())
++ return true;
++
++ // If this is a landingpad, the first non-phi instruction will be an EH_LABEL.
++ // Don't consider that label to be a terminator.
++ return MI.getIterator() != MBB->getFirstNonPHI();
++}
++
+ /// Build a map of instruction orders. Return the first terminator and its
+ /// order. Consider EH_LABEL instructions to be terminators as well, since local
+ /// values for phis after invokes must be materialized before the call.
+@@ -233,7 +248,7 @@ void FastISel::InstOrderMap::initialize(
+ unsigned Order = 0;
+ for (MachineInstr &I : *MBB) {
+ if (!FirstTerminator &&
+- (I.isTerminator() || (I.isEHLabel() && &I != &MBB->front()))) {
++ (I.isTerminator() || isTerminatingEHLabel(MBB, I))) {
+ FirstTerminator = &I;
+ FirstTerminatorOrder = Order;
+ }
+diff --git a/llvm/test/CodeGen/X86/sink-local-value.ll b/llvm/test/CodeGen/X86/sink-local-value.ll
+index b0e511ac1189..f7d861ac9b6c 100644
+--- a/llvm/test/CodeGen/X86/sink-local-value.ll
++++ b/llvm/test/CodeGen/X86/sink-local-value.ll
+@@ -145,6 +145,42 @@ try.cont: ; preds = %entry, %lpad
+ ; CHECK: retl
+
+
++define i32 @lpad_phi() personality i32 (...)* @__gxx_personality_v0 {
++entry:
++ store i32 42, i32* @sink_across
++ invoke void @may_throw()
++ to label %try.cont unwind label %lpad
++
++lpad: ; preds = %entry
++ %p = phi i32 [ 11, %entry ] ; Trivial, but -O0 keeps it
++ %0 = landingpad { i8*, i32 }
++ catch i8* null
++ store i32 %p, i32* @sink_across
++ br label %try.cont
++
++try.cont: ; preds = %entry, %lpad
++ %r.0 = phi i32 [ 13, %entry ], [ 55, %lpad ]
++ ret i32 %r.0
++}
++
++; The constant materialization should be *after* the stores to sink_across, but
++; before any EH_LABEL.
++
++; CHECK-LABEL: lpad_phi:
++; CHECK: movl $42, sink_across
++; CHECK: movl $13, %{{[a-z]*}}
++; CHECK: .Ltmp{{.*}}:
++; CHECK: calll may_throw
++; CHECK: .Ltmp{{.*}}:
++; CHECK: jmp .LBB{{.*}}
++; CHECK: .LBB{{.*}}: # %lpad
++; CHECK-NEXT: .Ltmp{{.*}}:
++; CHECK: movl {{.*}}, sink_across
++; CHECK: movl $55, %{{[a-z]*}}
++; CHECK: .LBB{{.*}}: # %try.cont
++; CHECK: retl
++
++
+ ; Function Attrs: nounwind readnone speculatable
+ declare void @llvm.dbg.value(metadata, metadata, metadata) #0
+
diff --git a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
new file mode 100644
index 0000000000..3f16de5a2b
--- /dev/null
+++ b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
@@ -0,0 +1,113 @@
+Guix note: this got detected with the test suite of rustc 1.41.1, but
+the issue potentially affects all consumers of LLVM.
+
+From 58e8c793d0e43150a6452e971a32d7407a8a7401 Mon Sep 17 00:00:00 2001
+From: Tim Northover <tnorthover@apple.com>
+Date: Mon, 30 Sep 2019 07:46:52 +0000
+Subject: [PATCH] Revert "[SCEV] add no wrap flag for SCEVAddExpr."
+
+This reverts r366419 because the analysis performed is within the context of
+the loop and it's only valid to add wrapping flags to "global" expressions if
+they're always correct.
+
+llvm-svn: 373184
+---
+ llvm/lib/Analysis/ScalarEvolution.cpp | 2 +-
+ llvm/test/Analysis/ScalarEvolution/limit-depth.ll | 2 +-
+ llvm/test/Analysis/ScalarEvolution/nsw.ll | 2 +-
+ llvm/test/Analysis/ScalarEvolution/trip-count12.ll | 2 +-
+ llvm/test/Analysis/ScalarEvolution/trip-count9.ll | 8 ++++----
+ 5 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
+index 354ae05bb841..c29fc5dbccfb 100644
+--- a/llvm/lib/Analysis/ScalarEvolution.cpp
++++ b/llvm/lib/Analysis/ScalarEvolution.cpp
+@@ -4992,7 +4992,7 @@ const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN,
+ // overflow.
+ if (auto *BEInst = dyn_cast<Instruction>(BEValueV))
+ if (isLoopInvariant(Accum, L) && isAddRecNeverPoison(BEInst, L))
+- (void)getAddRecExpr(getAddExpr(StartVal, Accum, Flags), Accum, L, Flags);
++ (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);
+
+ return PHISCEV;
+ }
+diff --git a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
+index db68a4f84c91..6fdf8c5df974 100644
+--- a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
++++ b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
+@@ -46,7 +46,7 @@ define void @test_mul(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
+ define void @test_sext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
+ ; CHECK-LABEL: @test_sext
+ ; CHECK: %se2 = sext i64 %iv2.inc to i128
+-; CHECK-NEXT: --> {(1 + (sext i64 {(sext i32 (1 + %a)<nsw> to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
++; CHECK-NEXT: --> {(1 + (sext i64 {(sext i32 (1 + %a) to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
+ entry:
+ br label %loop
+
+diff --git a/llvm/test/Analysis/ScalarEvolution/nsw.ll b/llvm/test/Analysis/ScalarEvolution/nsw.ll
+index 69427368625d..ca24f9d4a04b 100644
+--- a/llvm/test/Analysis/ScalarEvolution/nsw.ll
++++ b/llvm/test/Analysis/ScalarEvolution/nsw.ll
+@@ -163,7 +163,7 @@ bb5: ; preds = %bb2
+ declare void @f(i32)
+
+ ; CHECK-LABEL: nswnowrap
+-; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (2 + %v)
++; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (1 + ((1 + %v)<nsw> smax %v))
+ define void @nswnowrap(i32 %v, i32* %buf) {
+ entry:
+ %add = add nsw i32 %v, 1
+diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
+index 5e7d72d5e4f3..d0086ee2e6ac 100644
+--- a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
++++ b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
+@@ -1,7 +1,7 @@
+ ; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
+
+ ; CHECK: Determining loop execution counts for: @test
+-; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len)<nsw> /u 2)
++; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len) /u 2)
+ ; CHECK: Loop %for.body: max backedge-taken count is 1073741823
+
+ define zeroext i16 @test(i16* nocapture %p, i32 %len) nounwind readonly {
+diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+index c0a1d12fa00e..9a080b34743f 100644
+--- a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
++++ b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+@@ -179,7 +179,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @nsw_startx
+-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax %n))
++; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
+ ; CHECK: Loop %loop: max backedge-taken count is -1
+ define void @nsw_startx(i4 %n, i4 %x) {
+ entry:
+@@ -195,7 +195,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @nsw_startx_step2
+-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax %n)) /u 2)
++; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax %n)) /u 2)
+ ; CHECK: Loop %loop: max backedge-taken count is 7
+ define void @nsw_startx_step2(i4 %n, i4 %x) {
+ entry:
+@@ -381,7 +381,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @even_nsw_startx
+-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax (2 * %n)))
++; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
+ ; CHECK: Loop %loop: max backedge-taken count is -2
+ define void @even_nsw_startx(i4 %n, i4 %x) {
+ entry:
+@@ -398,7 +398,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @even_nsw_startx_step2
+-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax (2 * %n))) /u 2)
++; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
+ ; CHECK: Loop %loop: max backedge-taken count is 7
+ define void @even_nsw_startx_step2(i4 %n, i4 %x) {
+ entry: