Skip to content

Compiliation fails with clang 19 #57

@valentin-seitz

Description

@valentin-seitz

When compiling the package with LLVM 19 i encountered the following errors:

./dccrg/dccrg.hpp:10597:33: error: no member named 'get_x_index' in 'Dccrg<type-parameter-0-0, type-parameter-0-1, tuple<type-parameter-0-2...>, tuple<type-parameter-0-3...>>'
 10597 |                 const uint64_t index1 = this->get_x_index(cell1);
       |                                         ~~~~  ^
./dccrg/dccrg.hpp:10598:33: error: no member named 'get_x_index' in 'Dccrg<type-parameter-0-0, type-parameter-0-1, tuple<type-parameter-0-2...>, tuple<type-parameter-0-3...>>'
 10598 |                 const uint64_t index2 = this->get_x_index(cell2);
       |                                         ~~~~  ^
./dccrg/dccrg.hpp:10627:33: error: no member named 'get_y_index' in 'Dccrg<type-parameter-0-0, type-parameter-0-1, tuple<type-parameter-0-2...>, tuple<type-parameter-0-3...>>'
 10627 |                 const uint64_t index1 = this->get_y_index(cell1);
       |                                         ~~~~  ^
./dccrg/dccrg.hpp:10628:33: error: no member named 'get_y_index' in 'Dccrg<type-parameter-0-0, type-parameter-0-1, tuple<type-parameter-0-2...>, tuple<type-parameter-0-3...>>'
 10628 |                 const uint64_t index2 = this->get_y_index(cell2);
       |                                         ~~~~  ^
./dccrg/dccrg.hpp:10657:33: error: no member named 'get_z_index' in 'Dccrg<type-parameter-0-0, type-parameter-0-1, tuple<type-parameter-0-2...>, tuple<type-parameter-0-3...>>'
 10657 |                 const uint64_t index1 = this->get_z_index(cell1);
       |                                         ~~~~  ^
./dccrg/dccrg.hpp:10658:33: error: no member named 'get_z_index' in 'Dccrg<type-parameter-0-0, type-parameter-0-1, tuple<type-parameter-0-2...>, tuple<type-parameter-0-3...>>'
 10658 |                 const uint64_t index2 = this->get_z_index(cell2);

Looking at the code we can see that functions bool {x,y,z}_indices_overlap(const uint64_t cell1, const uint64_t cell2) const call to get_{x,y,z}_index respectively.

dccrg/dccrg.hpp

Lines 11347 to 11348 in 98319b0

const uint64_t index1 = this->get_x_index(cell1);
const uint64_t index2 = this->get_x_index(cell2);

There is however no member function get_{x,y,z}_index available, so clang fails. I don't fully understand why gcc compiles it, but maybe it has to do with code-reachability.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions