Software Archive
Read-only legacy content
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.
17060 Discussions

Compiler bug with target attribute in icc 14

Apo1
Beginner
744 Views

Hi there,

I'll just let the code and output speak for itself:

// broken
#define DECLARE_OFFLOADED __attribute__ ((target (mic)))

// working
//#define DECLARE_OFFLOADED 

typedef void   (init_t)          (void);
typedef void   (args_t)          (void);
typedef void   (start_t)         (void);
typedef void   (eval_all_t)      (void);
typedef void   (eval_comp_t)     (void);
typedef void   (eval_rng_t)      (void);
typedef void   (init_solution_t) (void);
typedef void   (jeval_t)         (void);

DECLARE_OFFLOADED init_t             init;
DECLARE_OFFLOADED args_t             args;
DECLARE_OFFLOADED start_t            start;
DECLARE_OFFLOADED eval_all_t         eval_all;
DECLARE_OFFLOADED eval_comp_t        eval_comp;
DECLARE_OFFLOADED eval_rng_t         eval_rng;
DECLARE_OFFLOADED init_solution_t    init_solution;
DECLARE_OFFLOADED jeval_t            jeval;

int main(int argc, char **argv) {
        return 0;
}

Compiling this with icc code.c results in several compiler errors:

stochs@pool15:~/src/broken> icc  e2l.cc 
e2l.cc(19): error: identifier "eval_all_t" is undefined
  DECLARE_OFFLOADED eval_all_t         eval_all;
                    ^

e2l.cc(21): error: identifier "eval_rng_t" is undefined
  DECLARE_OFFLOADED eval_rng_t         eval_rng;
                    ^

compilation aborted for e2l.cc (code 2)

... which change if you move the function declarations around, or rename them (or the typedefs).

Compiler version: Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.1.106 Build 20131008

Can anybody else confirm this? How do you suggest I proceed?

Thanks!

--Apo

0 Kudos
3 Replies
Kevin_D_Intel
Employee
744 Views

This is an interesting issue. I do not know what causes the compiler errors yet and submitted this to Development (see internal tracking id below) for further investigation/repair.

In the meantime, declaring them using the offload_attribute appears to work:

#pragma offload_attribute(push, target(mic))
init_t             init;
args_t             args;
start_t            start;
eval_all_t         eval_all;
eval_comp_t        eval_comp;
eval_rng_t         eval_rng;
init_solution_t    init_solution;
jeval_t            jeval;
#pragma offload_attribute(pop)

(Internal tracking id: DPD200358208)

0 Kudos
Manoj_K_1
Beginner
744 Views

compiler may be undefined

 

0 Kudos
Manoj_K_1
Beginner
744 Views

may i know the purpose of this program?

 

0 Kudos
Reply