[Issue 7745] Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken

2015-06-09 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=7745

Andrei Alexandrescu and...@erdani.com changed:

   What|Removed |Added

Version|D1  D2 |D2

--


[Issue 7745] Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken

2012-03-29 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7745


Walter Bright bugzi...@digitalmars.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||bugzi...@digitalmars.com
 Resolution||FIXED


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 7745] Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken

2012-03-28 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7745



--- Comment #4 from github-bugzi...@puremagic.com 2012-03-28 22:54:42 PDT ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/3eee94d6116abfe437303f8495067bf32d3b7023
Merge pull request #824 from donc/regression7745

Fix issue 7745 Regression(2.059beta) Methods defined in external object ...

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 7745] Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken

2012-03-22 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7745



--- Comment #2 from Don clugd...@yahoo.com.au 2012-03-22 04:08:58 PDT ---
Now able to reproduce it. The cause was this line added to e2ir.c, line 3129.

   //printf(DelegateExp::toElem() '%s'\n, toChars());

+if (func-semanticRun == PASSsemantic3done)
+irs-deferToObj-push(func);

The fact that EVERY delegate expression gets deferred, seems like overkill for
the bug being fixed.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 7745] Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken

2012-03-22 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7745


Don clugd...@yahoo.com.au changed:

   What|Removed |Added

Version|D1  |D1  D2


--- Comment #3 from Don clugd...@yahoo.com.au 2012-03-22 05:36:47 PDT ---
Reduced test case (actually much longer, but doesn't require -inline -release,
and also fails on D2).

inc.d ---
struct C { void asdfg() {} }

m.d---
import inc;

bool forceSemantic7745()
{
   C c;
   c.asdfg();
  return true;
}
static assert(forceSemantic7745());

void f(C c) { auto x = c.asdfg; }
void main() {}

dmd -c inc.d
dmd -c m.d
dmd m.o inc.o

inc.o: In function `_D3inc1C5asdfgMFZv':
inc.d:(.text._D3inc1C5asdfgMFZv+0x0): multiple definition of
`_D3inc1C5asdfgMFZv'
m.o:m.d:(.text._D3inc1C5asdfgMFZv+0x0): first defined here

It happens because this has forced asdfg() to be semantically analyzed. I'm
using CTFE to do this, there are probably more direct ways.

PATCH (D2, also works for D1):
-- a/src/e2ir.c
+++ b/src/e2ir.c
@@ -3422,7 +3422,8 @@ elem *DelegateExp::toElem(IRState *irs)

 //printf(DelegateExp::toElem() '%s'\n, toChars());

-if (func-semanticRun == PASSsemantic3done)
+ if (func-semanticRun == PASSsemantic3done
+  func-parent == irs-m ) // bug 7745
 {
 irs-deferToObj-push(func);
 }

The idea of the patch is that it should only write to the obj file if the
parent of the function belongs to this module.
Not sure if this is correct, but at least it still fixes the test case in 4820.
Perhaps it should run through all parents until it gets to the module.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 7745] Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken

2012-03-21 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7745


Don clugd...@yahoo.com.au changed:

   What|Removed |Added

 CC||clugd...@yahoo.com.au


--- Comment #1 from Don clugd...@yahoo.com.au 2012-03-21 12:27:57 PDT ---
I haven't been able to reproduce this. If I change it from:
-auto x = c.asdfg;
+auto x = C.asdfg;

then I get a U symbol for _D3inc1C5asdfgMFZv, otherwise I can't get it to
appear at all. I guess it is changed into an index into the vtable.
Further investigation required.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---