`size` pragma on type used in type imported indirectly results in inconsistent C declarations of type size
### Description

`w.nim`:
```nim
import ./x
discard "" & $default(L)
```

`x.nim`:
```nim
import "."/b
export L
```

`b.nim`:
```nim
type
  H {.size: 4.} = set[bool]
  L* = object
    u: H

proc `$`*(a: H): string = discard
```

The trouble is that a `dollar___w_u103` gets defined twice, both times with the signature:
```c
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___w_u103)(tySet_tyBool__VaVACK0bpYmqIQ0mKcHfQQ x_p0)
```
but for one of them:
```c
typedef NU32 tySet_tyBool__VaVACK0bpYmqIQ0mKcHfQQ;
struct tyObject_L__Sk5cM20LFsJ0MozgxYTJVg {
	tySet_tyBool__VaVACK0bpYmqIQ0mKcHfQQ u;
};
```
and for the other
```c
typedef NU8 tySet_tyBool__VaVACK0bpYmqIQ0mKcHfQQ;
```

Occurs for both `refc` and ORC. The LTO makes it more obvious during compilation, but the same underlying inconsistency happens regardless.

### Nim Version

```
Nim Compiler Version 2.0.14 [Linux: amd64]
Compiled at 2025-01-18
Copyright (c) 2006-2023 by Andreas Rumpf

git hash: bf4de6a394e040d9810cba8c69fb2829ff04dcc6
active boot switches: -d:release
```

```
Nim Compiler Version 2.2.1 [Linux: amd64]
Compiled at 2025-01-18
Copyright (c) 2006-2025 by Andreas Rumpf

git hash: a2a1c2b7f1b0bd856e0bdeaa0e2f6bf083fb24f1
active boot switches: -d:release
```

```
Nim Compiler Version 2.3.1 [Linux: amd64]
Compiled at 2025-01-18
Copyright (c) 2006-2025 by Andreas Rumpf

git hash: 2af9ddc286b4f0c6d467fb7a95a60a1e10437744
active boot switches: -d:release
```

### Current Output

```text
/tmp$ /tmp/nimdevel/bin/nim c --passC:"-flto" --passL:"-flto" w.nim 
Hint: used config file '/tmp/nimdevel/config/nim.cfg' [Conf]
Hint: used config file '/tmp/nimdevel/config/config.nims' [Conf]
.......................................................................
CC: nimdevel/lib/system/exceptions.nim
CC: nimdevel/lib/std/private/digitsutils.nim
CC: nimdevel/lib/std/objectdollar.nim
CC: nimdevel/lib/system/dollars.nim
CC: nimdevel/lib/system.nim
CC: w.nim
Hint:  [Link]
/tmp/tmp.g9Gr7ehENs/@mnimdevel@slib@ssystem.nim.c:434:15: warning: type of ‘dollar___w_u103’ does not match original declaration [-Wlto-type-mismatch]
  434 | N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___w_u103)(tySet_tyBool__VaVACK0bpYmqIQ0mKcHfQQ x_p0);
      |               ^
/tmp/tmp.g9Gr7ehENs/@mnimdevel@slib@ssystem@sdollars.nim.c:226:15: note: type mismatch in parameter 1
  226 | N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___w_u103)(tySet_tyBool__VaVACK0bpYmqIQ0mKcHfQQ x_p0) {
      |               ^
/tmp/tmp.g9Gr7ehENs/@mnimdevel@slib@ssystem@sdollars.nim.c:226:15: note: ‘dollar___w_u103’ was previously declared here
Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
28596 lines; 0.422s; 30.902MiB peakmem; proj: /tmp/w.nim; out: /tmp/w [SuccessX]
```

### Expected Output

```text
No -Wlto-type-mismatch and no actually-mismatched tySet_tyBool__VaVACK0bpYmqIQ0mKcHfQQ type definitions either.
```

### Known Workarounds

_No response_

### Additional Information

_No response_