diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 513361e..73c53d6 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1065,9 +1065,13 @@
         ++NumInstsInFunction;
       }
 
-      // If there is a pre-instruction symbol, emit a label for it here.
+      // If there is a pre-instruction symbol, emit a label for it here. If the
+      // instruction was duplicated and the label has already been emitted,
+      // don't re-emit the same label.
+      // FIXME: Consider strengthening that to an assertion.
       if (MCSymbol *S = MI.getPreInstrSymbol())
-        OutStreamer->EmitLabel(S);
+        if (S->isUndefined())
+          OutStreamer->EmitLabel(S);
 
       if (ShouldPrintDebugScopes) {
         for (const HandlerInfo &HI : Handlers) {
@@ -1120,9 +1124,13 @@
         break;
       }
 
-      // If there is a post-instruction symbol, emit a label for it here.
+      // If there is a post-instruction symbol, emit a label for it here.  If
+      // the instruction was duplicated and the label has already been emitted,
+      // don't re-emit the same label.
+      // FIXME: Consider strengthening that to an assertion.
       if (MCSymbol *S = MI.getPostInstrSymbol())
-        OutStreamer->EmitLabel(S);
+        if (S->isUndefined())
+          OutStreamer->EmitLabel(S);
 
       if (ShouldPrintDebugScopes) {
         for (const HandlerInfo &HI : Handlers) {
diff --git a/test/CodeGen/X86/taildup-heapallocsite.ll b/test/CodeGen/X86/taildup-heapallocsite.ll
new file mode 100644
index 0000000..378efe2
--- /dev/null
+++ b/test/CodeGen/X86/taildup-heapallocsite.ll
@@ -0,0 +1,81 @@
+; RUN: llc < %s -tail-dup-placement-threshold=4 | FileCheck %s
+
+; Based on test case from PR43695:
+; __declspec(allocator) void *alloc(unsigned int size);
+; void f2();
+; void f1(unsigned int *size_ptr) {
+;     void *hg = alloc(size_ptr ? *size_ptr : 1UL);
+;     f2();
+; }
+
+; In this case, block placement duplicates the heap allocation site. For now,
+; LLVM drops the labels from one call site. Eventually, we should track both.
+
+; ModuleID = 't.cpp'
+source_filename = "t.cpp"
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.22.27905"
+
+define dso_local void @taildupit(i32* readonly %size_ptr) !dbg !8 {
+entry:
+  call void @llvm.dbg.value(metadata i32* %size_ptr, metadata !14, metadata !DIExpression()), !dbg !17
+  %tobool = icmp eq i32* %size_ptr, null, !dbg !18
+  br i1 %tobool, label %cond.end, label %cond.true, !dbg !18
+
+cond.true:                                        ; preds = %entry
+  %0 = load i32, i32* %size_ptr, align 4, !dbg !18, !tbaa !19
+  br label %cond.end, !dbg !18
+
+cond.end:                                         ; preds = %entry, %cond.true
+  %cond = phi i32 [ %0, %cond.true ], [ 1, %entry ], !dbg !18
+  %call = tail call i8* @alloc(i32 %cond), !dbg !18, !heapallocsite !2
+  call void @llvm.dbg.value(metadata i8* %call, metadata !15, metadata !DIExpression()), !dbg !17
+  tail call void @f2(), !dbg !23
+  ret void, !dbg !24
+}
+
+; CHECK-LABEL: taildupit: # @taildupit
+; CHECK: testq
+; CHECK: je
+; CHECK: .Lheapallocsite0:
+; CHECK: callq alloc
+; CHECK: .Lheapallocsite1:
+; CHECK: jmp f2 # TAILCALL
+; CHECK-NOT: Lheapallocsite
+; CHECK: callq alloc
+; CHECK-NOT: Lheapallocsite
+; CHECK: jmp f2 # TAILCALL
+
+declare dso_local i8* @alloc(i32)
+
+declare dso_local void @f2()
+
+declare void @llvm.dbg.value(metadata, metadata, metadata)
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!3, !4, !5, !6}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 0650355c09ab8e6605ae37b818270a7a7c8ce2c7)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)
+!1 = !DIFile(filename: "t.cpp", directory: "C:\\src\\llvm-project\\build", checksumkind: CSK_MD5, checksum: "b227901e92d848fa564190b0762d757c")
+!2 = !{}
+!3 = !{i32 2, !"CodeView", i32 1}
+!4 = !{i32 2, !"Debug Info Version", i32 3}
+!5 = !{i32 1, !"wchar_size", i32 2}
+!6 = !{i32 7, !"PIC Level", i32 2}
+!8 = distinct !DISubprogram(name: "f1", linkageName: "?f1@@YAXPEAI@Z", scope: !1, file: !1, line: 5, type: !9, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !13)
+!9 = !DISubroutineType(types: !10)
+!10 = !{null, !11}
+!11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 64)
+!12 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
+!13 = !{!14, !15}
+!14 = !DILocalVariable(name: "size_ptr", arg: 1, scope: !8, file: !1, line: 5, type: !11)
+!15 = !DILocalVariable(name: "hg", scope: !8, file: !1, line: 6, type: !16)
+!16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
+!17 = !DILocation(line: 0, scope: !8)
+!18 = !DILocation(line: 6, scope: !8)
+!19 = !{!20, !20, i64 0}
+!20 = !{!"int", !21, i64 0}
+!21 = !{!"omnipotent char", !22, i64 0}
+!22 = !{!"Simple C++ TBAA"}
+!23 = !DILocation(line: 7, scope: !8)
+!24 = !DILocation(line: 8, scope: !8)
