D.gnu - [Bug 41] New: md5.d compilation error with enable checking
- d-bugmail puremagic.com (52/52) Mar 12 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=41
http://d.puremagic.com/bugzilla/show_bug.cgi?id=41
Summary: md5.d compilation error with enable checking
Product: GDC
Version: 0.17
Platform: Macintosh
OS/Version: Mac OS X
Status: NEW
Keywords: ice-on-valid-code, patch
Severity: normal
Priority: P2
Component: glue layer
AssignedTo: braddr puremagic.com
ReportedBy: braddr puremagic.com
reduced test case:
module std.md5;
void foo()
{
byte[] input;
void *b = &input[0];
}
proposed fix from our irc discussion which does resolve the compilation error.
Runtime correctness not verified yet.
--- d-codegen.cc.orig 2006-03-11 20:56:16.000000000 -0600
+++ d-codegen.cc 2006-03-11 21:37:14.000000000 -0600
-269,7 +269,7
// %% TODO: stuffing types ok?
if (target_type->ty == Tpointer) {
result = addressOf( exp );
- TREE_TYPE(result) = target_type->toCtype();
+ result = d_convert_basic(target_type->toCtype(), result);
} else if (target_type->ty == Tarray) {
TypeSArray * a_type = (TypeSArray*) exp_type;
-290,7 +290,7
array_len = array_len * sz_a / sz_b;
}
tree pointer_value = addressOf( exp );
- TREE_TYPE(pointer_value) =
target_type->next->pointerTo()->toCtype();
+ pointer_value =
d_convert_basic(target_type->next->pointerTo()->toCtype(), pointer_value);
// Assumes casting to dynamic array of same type or void
return darrayVal(target_type, array_len, pointer_value);
--- d-glue.cc.orig 2006-03-11 21:37:48.000000000 -0600
+++ d-glue.cc 2006-03-12 13:11:42.000000000 -0600
-1424,7 +1424,7
// %% check for &array[index] -> array + index ?
tree t = irs->addressOf(e1->toElem(irs));
- TREE_TYPE(t) = type->toCtype(); // %% is this ever needed?
+ t = d_convert_basic(type->toCtype(), t);
return t;
}
--
Mar 12 2006








d-bugmail puremagic.com