aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2025-01-20 20:01:03 +0100
committerIain Buclaw <ibuclaw@gdcproject.org>2025-01-20 20:20:37 +0100
commit9ab38952a2033d6d4a8e31c3c4d2ab1a25a406c6 (patch)
treec0254cfafe747468b06d473c1b2449a878229597 /gcc
parent0d1e62b83561baa185bf080515750a89dd3ac410 (diff)
downloadgcc-9ab38952a2033d6d4a8e31c3c4d2ab1a25a406c6.zip
gcc-9ab38952a2033d6d4a8e31c3c4d2ab1a25a406c6.tar.gz
gcc-9ab38952a2033d6d4a8e31c3c4d2ab1a25a406c6.tar.bz2
d: Fix failing test with 32-bit compiler [PR114434]
Since the introduction of gdc.test/runnable/test23514.d, it's exposed an incorrect compilation when adding a 64-bit constant to a link-time address. The current cast to size_t causes a loss of precision, which can result in incorrect compilation. PR d/114434 gcc/d/ChangeLog: * expr.cc (ExprVisitor::visit (PtrExp *)): Get the offset as a dinteger_t rather than a size_t. (ExprVisitor::visit (SymOffExp *)): Likewise.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/d/expr.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/d/expr.cc b/gcc/d/expr.cc
index 304d6bd..f04ec33 100644
--- a/gcc/d/expr.cc
+++ b/gcc/d/expr.cc
@@ -1499,7 +1499,7 @@ public:
void visit (PtrExp *e) final override
{
Type *tnext = NULL;
- size_t offset;
+ dinteger_t offset;
tree result;
if (e->e1->op == EXP::add)
@@ -2074,7 +2074,7 @@ public:
void visit (SymOffExp *e) final override
{
/* Build the address and offset of the symbol. */
- size_t soffset = e->isSymOffExp ()->offset;
+ dinteger_t soffset = e->isSymOffExp ()->offset;
tree result = get_decl_tree (e->var);
TREE_USED (result) = 1;