diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index 22c28a98371..f457c863bc3 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -12131,4 +12131,10 @@ public class AST2CPPTests extends AST2TestBase { public void testDecltypeAutoReturnType_482225() throws Exception { parseAndCheckBindings(); } + + // constexpr int waldo = (sizeof(double) % 16); + public void testSizeofDouble_506170() throws Exception { + BindingAssertionHelper helper = getAssertionHelper(); + helper.assertVariableValue("waldo", 8); + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java index 574fbefbe8f..0e433e57d87 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java @@ -151,6 +151,7 @@ public class AST2TestBase extends BaseTestCase { map.put("__SIZEOF_SHORT__", "2"); map.put("__SIZEOF_INT__", "4"); map.put("__SIZEOF_LONG__", "8"); + map.put("__SIZEOF_DOUBLE__", "8"); map.put("__SIZEOF_POINTER__", "8"); return map; } @@ -160,6 +161,7 @@ public class AST2TestBase extends BaseTestCase { map.put("__SIZEOF_SHORT__", "2"); map.put("__SIZEOF_INT__", "4"); map.put("__SIZEOF_LONG__", "8"); + map.put("__SIZEOF_DOUBLE__", "8"); map.put("__SIZEOF_POINTER__", "8"); return map; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java index afcdf72a2e8..5877d020985 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java @@ -238,8 +238,8 @@ public class SizeofCalculator { return type.isComplex() ? sizeof_complex_float : sizeof_float; case eDouble: return type.isComplex() ? - (type.isLong() ? sizeof_long_double : sizeof_double) : - (type.isLong() ? sizeof_complex_long_double : sizeof_complex_double); + (type.isLong() ? sizeof_complex_long_double : sizeof_complex_double) : + (type.isLong() ? sizeof_long_double : sizeof_double); case eFloat128: return type.isComplex() ? sizeof_complex_float128 : sizeof_float128; case eDecimal32: