I have a C program that uses inline functions. They are defined in a header file as, for example, static inline int fun(vars...), etc, and I use inline-forceinline option to force to the compiler to inline the functions.
The compiler version is Intel® C++ Composer XE for Linux*, Version 188.8.131.52.
I have the "same" compiler installed in two machines, the first one is a Dell laptop with a processor Intel(R) Core(TM) 2 Duo CPU T5800 @ 2.00 GHz (ia32 arch) and the seccond one is a desktop computer with an Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz (intel64 arch).
When I compile and run the program, the ia32 architecture gives the currect result while, when I compile and run the same code into the intel64 architecture gives: Segmentation fault (core dumped).
I am not an expert and this fact has me completely confused! I would appreciate it if someone could help me.
>>>When I compile and run the program, the ia32 architecture gives the currect result while, when I compile and run the same code into the intel64 architecture gives: Segmentation fault (core dumped).>>>
Segmentation fault on Windows platform is called Access violation so it is related to the memory.It is possible that your code could dereference null pointer or access data in other process address space or trying to access nonexistant memory address.
Were you able to resolve this issue?
As Sergey pointed out it's not clear that inlining is the cause. If you suspect inlining you could disable it by using -Ob0. I will investigate this issue if you could send a test case.