sharjeelyunus/github-issues-dataset huggingface dataset:
Repository: go
Issue: cmd/vet: flag atomic.Value usages with interface types
Labels: NeedsDecision,Analysis

Consider the following:
```go
var v atomic.Value
var err error

err = &http.ProtocolError{}
v.Store(err)
err = io.EOF
v.Store(err)
```

The intention to have a atomic value store for errors. However, running this code panics:
```
panic: sync/atomic: store of inconsistently typed value into Value
```

This is because `atomic.Value` requires that the underlying *concrete* type be the same (which is a reasonable expectation for its implementation). When going through the `atomic.Value.Store` method call, the fact that both these are of the `error` interface is lost.

Perhaps we should add a vet check that flags usages of `atomic.Value` where the argument passed in is an interface type?

Vet criterions:
* frequency: not sure, I haven't done an analysis through all Go corpus.
* correctness: this is almost always wrong. Any "correct" usages should type assert to the concrete value first.
* accuracy: if the type information available can conclusively show an argument is an interface type, then very accurate.


\cc @robpike 
\cc @dominikh for `staticcheck`
Repository: nvm
Issue: `lts/*` should point to latest installed line, not latest available line
Labels: feature requests,bugs

- Operating system and version:
Ubuntu 16.04.3 LTS

- `nvm debug` output:
<details>
<!-- do not delete the following blank line -->

```sh
nvm --version: v0.33.6
$SHELL: /bin/bash
$HOME: /home/build
$NVM_DIR: '$HOME/.nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
$NVM_NODEJS_ORG_MIRROR: ''
$NVM_IOJS_ORG_MIRROR: ''
shell version: 'GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)'
uname -a: 'Linux 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 14:24:03 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux'
OS version: Ubuntu 16.04.3 LTS
sed: -e expression #1, char 9: Unmatched ) or \)
curl: , curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
wget: /usr/bin/wget, GNU Wget 1.17.1 built on linux-gnu.
git: /usr/bin/git, git version 2.7.4
grep: /bin/grep (grep --color=auto), grep (GNU grep) 2.25
awk: /usr/bin/awk, GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
sed: /bin/sed, sed (GNU sed) 4.2.2
cut: /usr/bin/cut, cut (GNU coreutils) 8.25
basename: /usr/bin/basename, basename (GNU coreutils) 8.25
rm: /bin/rm, rm (GNU coreutils) 8.25
sed: -e expression #1, char 9: Unmatched ) or \)
mkdir: , mkdir (GNU coreutils) 8.25
xargs: /usr/bin/xargs, xargs (GNU findutils) 4.7.0-git
nvm current: none
which node:
which iojs:
which npm:
npm config get prefix: The program 'npm' is currently not installed. You can install it by typing:
sudo apt install npm
npm root -g: The program 'npm' is currently not installed. You can install it by typing:
sudo apt install npm
```
</details>

- `nvm ls` output:
<details>
<!-- do not delete the following blank line -->

```sh
v4.8.3
         v5.3.0
        v6.10.3
        v6.11.0
        v6.11.1
        v6.11.2
        v6.11.3
        v6.11.4
        v6.11.5
default -> lts/* (-> N/A)
node -> stable (-> v6.11.5) (default)
stable -> 6.11 (-> v6.11.5) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> N/A)
lts/argon -> v4.8.5 (-> N/A)
lts/boron -> v6.11.5
lts/carbon -> v8.9.0 (-> N/A)
```
</details>

- How did you install `nvm`? (e.g. install script in readme, homebrew):
install script in readme

- What steps did you perform?
Opened a new terminal session (e.g. SSH client or new tmux tab).

- What happened?
Error message:
````
N/A: version "N/A -> N/A" is not yet installed.

You need to run "nvm install N/A" to install it before using it.
````

- What did you expect to happen?
No error message.

- Is there anything in any of your profile files (`.bashrc`, `.bash_profile`, `.zshrc`, etc) that modifies the `PATH`?
No.
Repository: angular
Issue: Compiling with Closure Compiler requires unnecessary extern
Labels: freq1: low,area: compiler,type: use-case,P3

<!--
PLEASE HELP US PROCESS GITHUB ISSUES FASTER BY PROVIDING THE FOLLOWING INFORMATION.

ISSUES MISSING IMPORTANT INFORMATION MAY BE CLOSED WITHOUT INVESTIGATION.
-->

## I'm submitting a...
<!-- Check one of the following options with "x" -->
<pre><code>
[ ] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report  <!-- Please search GitHub for a similar issue or PR before submitting -->
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
</code></pre>

## Current behavior
<!-- Describe how the issue manifests. -->
When compiling an AOT compiler bundle with Closure Compiler, an error prevents the bundle from being compiled.

[14:46:34] WARN node_modules/@angular/platform-browser/esm2015/platform-browser.js:1542: 
Originally at:
node_modules/packages/platform-browser/src/dom/util.js:38: ERROR - variable COMPILED is undeclared

1 error(s), 0 warning(s)

As a workaround, I made COMPILED an extern, but this variable is not needed in my application. I believe this had something to do with this change:

https://github.com/angular/angular/commit/db74f44a97b545488c4e05bf4210dfb733fe8d6f

## Expected behavior
<!-- Describe what the desired behavior would be. -->

COMPILED should not be required by an application to compile AOT compiled code with Closure Compiler.

## Minimal reproduction of the problem with instructions

Follow the instructions in the README.md of this repo:

https://github.com/steveblue/angular5-closure-extern-bug


## What is the motivation / use case for changing the behavior?
<!-- Describe the motivation or the concrete use case. -->
Angular should not require a dev to include unnecessary externs just to build with Closure Compiler.

## Environment

<pre><code>
Angular version: 5.0.0
<!-- Check whether this is still an issue in the most recent Angular version -->

Browser:
- [ ] Chrome (desktop) version XX
- [ ] Chrome (Android) version XX
- [ ] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX
 
For Tooling issues:
- Node version: 6.11.0
- Platform:  MacOS 11.12.6


</code></pre>
Repository: opencv
Issue: cv2.so link two versions: libopencv_imgcodecs.so,libopencv_imgproc.so,libopencv_core.so
Labels: category: build/install,incomplete

- OpenCV => 3.3
- Operating System / Platform => ubuntu 16.04 64 Bit
- Compiler => gcc version 5.4.0 20160609

I cleaned opencv-3.1 in ubuntu 16.04,then build 3.3,when

`ldd /usr/lib/python2.7/dist-packages/cv2.so|grep 3.1`

it gives:

```
/lib64/ld-linux-x86-64.so.2 (0x0000557321d2a000)
libopencv_imgcodecs.so.3.1 => not found
libopencv_imgproc.so.3.1 => not found
libopencv_core.so.3.1 => not found
```
as you can see that cv2.so(from opencv 3.3) **linked three not existed libs** from opencv-3.1

when

`ldd /usr/lib/python2.7/dist-packages/cv2.so|grep libopencv_core`

it gives

```
libopencv_core.so.3.3 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.3..
libopencv_core.so.3.1 => not found
```

obviously,**two versions of libopencv_core got linked into cv2.so**,can anybody tell me:

how do this happened?
how to solve this problem?

my steps:

```
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$(python -c
"import sys; print(sys.prefix)") -D PYTHON_EXECUTABLE=$(which python) -D 
OPENCV_EXTRA_MODULES_PATH=/home/user/opencv_contrib/modules -D WITH_QT=ON -D         
WITH_OPENGL=ON -D WITH_IPP=ON -D WITH_OPENNI2=ON -D WITH_V4L=ON -D 
WITH_FFMPEG=ON -D WITH_GSTREAMER=OFF -D WITH_OPENMP=ON -D WITH_VTK=ON -D 
BUILD_opencv_java=OFF -D BUILD_opencv_python3=OFF -D WITH_CUDA=ON -D 
ENABLE_FAST_MATH=1 -D WITH_NVCUVID=ON -D CUDA_FAST_MATH=ON -D 
BUILD_opencv_cnn_3dobj=ON -D FORCE_VTK=ON -D WITH_TBB=ON -D WITH_CUBLAS=ON -
D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D WITH_GDAL=ON -D WITH_XINE=ON ..
```

`make -j 48`

`make install -j 48`
Repository: kubernetes
Issue: deployment run partly in constrain of quota
Labels: sig/scheduling,lifecycle/frozen

<!-- This form is for bug reports and feature requests ONLY! 

If you're looking for help check [Stack Overflow](https://stackoverflow.com/questions/tagged/kubernetes) and the [troubleshooting guide](https://kubernetes.io/docs/tasks/debug-application-cluster/troubleshooting/).
-->

**Is this a BUG REPORT or FEATURE REQUEST?**:

> Uncomment only one, leave it on its own line: 
>
> /kind bug
 /kind feature


**What happened**:
Deployment is a concept of a bunch of pod which complete some kind of task together.But it  will run partly in constrain of quota.

**What you expected to happen**:
If deployment does not meet quota requirements, it should be refused as a whole, not run partly 

**How to reproduce it (as minimally and precisely as possible)**:
create a quota like 
`apiVersion: v1`
`kind: ResourceQuota`
`metadata:`
  `name: pod-demo`
`spec:`
  `hard:`
   `pods: "2"`

then create a deployment with 5 replicas, k8s would run 2 pod  normally rather than refuse this deployment
**Anything else we need to know?**:

**Environment**:
- Kubernetes version (use `kubectl version`):
- Cloud provider or hardware configuration:
- OS (e.g. from /etc/os-release):
- Kernel (e.g. `uname -a`):
- Install tools:
- Others:
Repository: TypeScript
Issue: typeof Foo['bar'] has strange precedence
Labels: Suggestion,Help Wanted,Revisit,Effort: Moderate,Experimentation Needed

Type queries combined with indexed access types currently produce a parse tree that is surprising in its behavior.

One would think that `typeof Foo['bar']` would be parsed as `typeof (Foo['bar'])`, which would really be something like `typeof Foo.bar`.

That's not the case. It's actually parsed as `(typeof Foo)['bar']`.

Conveniently, it seems that semantically (when type-checking) these are identical, but it seems strange for syntactic consumers. Do we believe this is currently working as intended?
Repository: go
Issue: runtime/pprof: CPU profiling isn't implemented on Plan 9
Labels: OS-Plan9,NeedsFix,compiler/runtime
Repository: bitcoin
Issue: "Rolling forward" at startup can take a long time, and is not interruptible
Labels: UTXO Db and Indexes,Validation,Resource usage

bitcond is spending hours "Rolling forward" upon startup, seemingly reprocessing blocks that were previously processed. There have been reports of this happening since July on stackexchange and reddit, so I thought it time an issue was raised, given it's still happening in V0.15.1.
Repository: youtube-dl
Issue: Support download from cmore?
Labels: site-support-request,account-needed

- [x ] I've **verified** and **I assure** that I'm running youtube-dl **2017.10.29**
- [x ] At least skimmed through the [README](https://github.com/rg3/youtube-dl/blob/master/README.md), **most notably** the [FAQ](https://github.com/rg3/youtube-dl#faq) and [BUGS](https://github.com/rg3/youtube-dl#bugs) sections
- [x ] [Searched](https://github.com/rg3/youtube-dl/search?type=Issues) the bugtracker for similar issues including closed ones

### What is the purpose of your *issue*?
- [x ] Site support request (request for adding support for a new site)
Repository: rust
Issue: Blanket impl of AsRef for Deref
Labels: C-cleanup,A-specialization,S-blocked

There are currently FIXMEs [here](https://github.com/rust-lang/rust/blob/294f0eef736aa13cadf28ce7160a18a94ca7b87c/library/core/src/convert/mod.rs#L511-L517) and [here](https://github.com/rust-lang/rust/blob/294f0eef736aa13cadf28ce7160a18a94ca7b87c/library/core/src/convert/mod.rs#L532-L538) in the core `AsRef` and `AsMut` impls to change the implementations for `&` and `&mut` to a blanket impl over `Deref` and `DerefMut`. However, this blanket impl results in a number of conflicts (even with `deref`). Because of this, I opened https://github.com/rust-lang/rust/pull/45378 to remove the FIXMEs, but @withoutboats pointed out that we could potentially use intersection specialization to resolve the issue.

I'm not sure exactly what this impl (or set of impls) would look like, so I've closed the PR and opened this issue to track the resolution of the FIXMEs.
Repository: go
Issue: runtime: race detector: more aggressive scheduler perturbations
Labels: RaceDetector,NeedsInvestigation,compiler/runtime

A program was [posted to golang-nuts](https://groups.google.com/forum/#!topic/golang-nuts/U7plctxPET4), with the question “is this code thread [safe]?”

The program has a race: it executes a `select` with a default case many times in parallel, and the default case calls `close` on a channel. (You can see the race by inserting a `runtime.Gosched()`: https://play.golang.org/p/_PWTTCwPgi.)

To my surprise, the program runs without error even with the race detector enabled.

The [Go Memory Model](https://golang.org/ref/mem) defines an order between sends and receives but not between closes and sends or closes and other closes, so I think this is technically a data race (and not just a logic race). The race detector should report it.

`src/racy/main.go`:
```go
package main

import (
	"fmt"
	"sync/atomic"
	"time"
)

func main() {
	die := make(chan struct{})
	i := int32(0)
	closed := func() {
		select {
		case <-die:
			atomic.AddInt32(&i, 1)
		default:
			close(die)
			fmt.Println("closed")
		}
	}
	N := 100000
	for i := 0; i < N; i++ {
		go closed()
	}
	time.Sleep(10 * time.Second)
	fmt.Println(atomic.LoadInt32(&i))
}
```

```
$ go version
go version devel +1852573521 Wed Nov 1 16:58:36 2017 +0000 linux/amd64
$ go run -race src/racy/main.go
closed
99999
```
Repository: pytorch
Issue: improve performance of common CPU clone / contiguous calls with HPTT
Labels: module: cpu,triaged

HPTT provides quite a dramatic speedup for stuff like `x.transpose(0, 1).contiguous()`, calls which are quite common all over the place.

With Numpy as a baseline it provides 5x+ speedup consistently.
The API looks pretty simple, worth thinking of integrating

https://github.com/springer13/hptt
Repository: kubernetes
Issue: ControllerRevision has implicit patch and patchtype semantics
Labels: sig/apps,lifecycle/frozen

Use of the ControllerRevision object by the StatefulSet and DaemonSet controllers places strategic merge patch content in the revision data.

To successfully make use of this data, a client must know the data represents a patch, and what type of patch, in order to successfully apply it to roll back.

The nature of the data and the type of patch should be explicit in the object.

/sig apps
/cc @kow3ns
Repository: kubernetes
Issue: ControllerRevision rollback does not handle multiple versions correctly
Labels: kind/bug,sig/apps,sig/cli,lifecycle/frozen

`kubectl rollout undo` assumes the revision content stored in a ControllerRevision applies to a fixed group/version. The content currently placed in a controller revision by the statefulset and daemonset controllers happens to be patch content of the pod template spec located at a consistent JSON path, but that is not guaranteed by the API.

The `rollout undo` commands should determine which version to apply the `undo` patch to from the information recorded in the ControllerRevision (possibly the .metadata.ownerReferences[@controller==true] kind/apiVersion)

/sig apps
/sig cli
/cc @kow3ns
Repository: angular
Issue: Location.go doesn't work for external URLs
Labels: feature,area: common,workaround1: obvious,freq1: low,P4


## I'm submitting a...
<!-- Check one of the following options with "x" -->
<pre><code>
[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report  <!-- Please search GitHub for a similar issue or PR before submitting -->
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
</code></pre>

## Current behavior
<!-- Describe how the issue manifests. -->
Calling, for example, `location.go('https://www.google.com')` fails silently

## Expected behavior
<!-- Describe what the desired behavior would be. -->
`location.go('https://www.google.com')` should navigate to Google. If that's not intended to ever work, the documentation should say so, and it should throw an error. Right now, it implies that this should work.

## Minimal reproduction of the problem with instructions
<!--
For bug reports please provide the *STEPS TO REPRODUCE* and if possible a *MINIMAL DEMO* of the problem via
https://plnkr.co or similar (you can use this template as a starting point: http://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5).
-->
https://plnkr.co/edit/guGKhOqhBM3uG4ljAEGR?p=preview

Click "go". Notice nothing happens.

## What is the motivation / use case for changing the behavior?
<!-- Describe the motivation or the concrete use case. -->
I want to be able to navigate to external URLs in a testable way without having to provide my own injectable wrapper around window.location

## Environment

<pre><code>
Angular version: 5.0.0
<!-- Check whether this is still an issue in the most recent Angular version -->

Browser:
- [x] Chrome (desktop) version 61
 
</code></pre>
Repository: pytorch
Issue: Feature Request: Distributed send arbitrary objects
Labels: oncall: distributed,feature,module: pickle,module: serialization,triaged

It would be useful for torch.distributed.send and .recv to be able to send arbitrary objects. I have two requests:

1. One version of send and recv that does not copy to tensor, but instead returns a new tensor. This way, we can send tensors of arbitrary sizes, useful for many reinforcement learning settings
2. Ability to send arbitrary Python objects, preferrably over pickle streams. mpi4py supports this mode, and it is sometimes very useful to prototype with despite its inefficiencies.

cc @pietern @mrshenli @pritamdamania87 @zhaojuanmao @satgera @rohan-varma @gqchen @aazzolini @xush6528 @osalpekar
Repository: go
Issue: runtime: TestWindowsStackMemoryCgo is flaky
Labels: help wanted,OS-Windows,NeedsInvestigation,compiler/runtime

CL 74490 has added TestWindowsStackMemoryCgo that has been flaky. It fails with on windows-386-2008 builder

https://build.golang.org/log/6eac250b23e6d93f36a6824e260c69c67bd639be
https://build.golang.org/log/8528fd237adab902144de46f4a1814a162ed1514
https://build.golang.org/log/790eb5b35c79bb3154775987f5294c66715ed85a

```
--- FAIL: TestWindowsStackMemoryCgo (0.03s)
	crash_cgo_test.go:460: Failed to read stack usage: strconv.Atoi: parsing "59678\r\nThis application has requested the Runtime to terminate it in an unusual way.\nPlease contact the application's support team for more information.\r\nruntime: failed to create new OS thread (12)\r\n": invalid syntax
FAIL
FAIL	runtime	19.962s
```

on windows-amd64-2008 builder

https://build.golang.org/log/48659fdd5ce7d5fa4b5ac88009a1bb58a3ca3989
https://build.golang.org/log/b90c3a5bac8098da6dbbd0f1de78b349885d064f

and on windows-amd64-race builder

https://build.golang.org/log/c15b87b42bd461acb0066ca98b8f22aa982b5fc2

The error 12 is  (from https://docs.microsoft.com/en-us/cpp/c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr ) ENOMEM Not enough memory.

We also had trybots failed with different message

https://storage.googleapis.com/go-build-log/7228f1ad/windows-386-2008_ede19d12.log

```
--- FAIL: TestWindowsStackMemoryCgo (0.03s)
	crash_cgo_test.go:460: Failed to read stack usage: strconv.Atoi: parsing "69550\r\nThis application has requested the Runtime to terminate it in an unusual way.\nPlease contact the application's support team for more information.\r\nruntime: failed to create new OS thread (13)\r\n": invalid syntax
FAIL
FAIL	runtime	21.491s
```

13 is EACCES Permission denied

Alex
Repository: opencv
Issue: OpenCV Protobuf issues for >= 3.3.1
Labels: category: build/install

##### System information (version)
- OpenCV => 3.3.1
- Operating System / Platform => Ubuntu 16.04 64 Bit
- Compiler => gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
- used language here: Python 3.5.2
- cmake version: 3.5.1

##### Detailed description

After switching from OpenCV 3.3.0 to 3.3.1 when `import cv2` in my Python 3.5.2 I get the error:
> ImportError: /usr/local/lib/libopencv_dnn_modern.so.3.3: undefined symbol: _ZTIN6google8protobuf7MessageE

I compile OpenCV from source via cmake ...

> cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D USE_GStreamer=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D WITH_IPP=ON -D PYTHON_DEFAULT_EXECUTABLE=$(which python3) -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D BUILD_DOCS=OFF -D ENABLE_FAST_MATH=1 -D PROTOBUF_PROTOC_EXECUTABLE=/usr/bin/protoc ..

... and protobuf is installed via basic apt `libprotobuf-dev protobuf-compiler` (which gives e.g. libprotoc 2.6.1) and also via pip (`pip3 show protobuf` -> Version: 3.4.0).

However, here is what I discovered:
When using OpenCV 3.3.0, cmake gives me:

> -- Protobuf:   YES

Whereas OpenCV 3.3.1 (and also master branch) gives me:

> -- Protobuf:   NO

(Am I assuming correclty, that the latter disables building/using the protobuf source that comes with opencv (Version: 3.1.0. right?), thus defaults to my apt protobuf which is incompatible with what is expected or so?)

My main question: Why `Protobuf:  NO` now?
Switching back to 3.3.0 following same build procedure everything is fine, thus I assume this being a bug/issue worth investigating.

Let me know if I can provide you with any files or further details on this.
Repository: rust
Issue: Trait object calls not devirtualized
Labels: A-LLVM,I-slow,C-enhancement,T-compiler,A-trait-objects,C-optimization

```rust
trait A {
    fn k(&self, x: i32) -> i32;
}

pub struct O {
}

pub struct P {
}

impl A for O {
    fn k(&self, x: i32) -> i32 {
        x
    }
}

impl A for P {
    fn k(&self, x: i32) -> i32 {
        x
    }
}

pub enum R {
    P(P),
    O(O),
}
impl R {
    fn inner(&self) -> &A {
        match self {
            &R::P(ref p) => p,
            &R::O(ref o) => o,
        }
    }
    pub fn k(&self, x: i32) -> i32 {
        match self {
            &R::P(ref p) => p.k(x),
            &R::O(ref o) => o.k(x),
        }
    }

    pub fn j(&self, x: i32) -> i32 {
        self.inner().k(x)
    }
}
```

compiles to
```assembly
core::ptr::drop_in_place:
        push    rbp
        mov     rbp, rsp
        pop     rbp
        ret

core::ptr::drop_in_place:
        push    rbp
        mov     rbp, rsp
        pop     rbp
        ret

<example::O as example::A>::k:
        push    rbp
        mov     rbp, rsp
        mov     eax, esi
        pop     rbp
        ret

<example::P as example::A>::k:
        push    rbp
        mov     rbp, rsp
        mov     eax, esi
        pop     rbp
        ret

example::R::k:
        push    rbp
        mov     rbp, rsp
        mov     eax, esi
        pop     rbp
        ret

example::R::j:
        push    rbp
        mov     rbp, rsp
        cmp     byte ptr [rdi], 0
        lea     rdi, [rdi + 1]
        lea     rax, [rip + vtable.1]
        lea     rcx, [rip + vtable.0]
        cmove   rcx, rax
        pop     rbp
        jmp     qword ptr [rcx + 24]

vtable.0:
        .quad   core::ptr::drop_in_place
        .quad   0
        .quad   1
        .quad   <example::O as example::A>::k

vtable.1:
        .quad   core::ptr::drop_in_place
        .quad   0
        .quad   1
        .quad   <example::P as example::A>::k
```

Notice how much worse R::j() is then R::k()