Bug 3418 – link error with cast(ulong)(ulong*real)

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2009-10-19T02:13:00Z
Last change time
2015-06-09T01:26:55Z
Keywords
link-failure
Assigned to
nobody
Creator
rinick

Attachments

IDFilenameSummaryContent-TypeSize
588realUlongLink.dtest case with template use and commentsapplication/octet-stream523

Comments

Comment #0 by rinick — 2009-10-19T02:13:05Z
test case: ulong a = 1; a = cast(ulong)(a * 2.0L); ERROR message: OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. C:\d\dmd2\windows\bin\..\lib\SNN.lib(u64_ldbl) Offset FFE74H Record Type 0091 Error 1: Previous Definition Different : ___LDBLULLNG
Comment #1 by aldonunez1 — 2010-03-14T00:49:02Z
Created attachment 588 test case with template use and comments
Comment #2 by aldonunez1 — 2010-03-14T00:49:48Z
I get the same error, but in a slightly different context. I tried the case from ZY Zhou on DMD 2.041, and it still fails. The different case that I'm seeing is this. This links fine. real y = 99.5L; ulong x = cast(ulong) y; But if I put it after the following call, I get the link error. BinOp!(ulong, real).P( 99L ); // where P is defined like this template BinOp(T, U) { void Q( U u ) {} void P( T t ) { Q( cast(U) t ); } } Then compiling with -O gets rid of the error. I do have a case where the error doesn't go away with the -O flag. The following is all in main. BinOp!(ulong, real).P( 99L ); real y = 99.5L; void Q( ulong l ) { } void P( real r ) { Q( cast(ulong) r ); } // B: -O doesn't fix this P( y ); Of course, getting rid of the BinOp.P call gets rid of the error as before. Sorry if this is confusing. I've attached a file that might show this a little more clearly. Picking line A or one line B by itself will not bring out the error. It involves enabling A and one of the line Bs.
Comment #3 by bugzilla — 2010-09-03T01:35:02Z