Hi Sterling,

I've got an issue building gdb for xtensa linux with gcc, reported it here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65416

Looking at it I've got two questions, can you help me with them?

1. in windowed ABI stack pointer update is always split into two opcodes:
  add and movsp. How gcc optimization passes are supposed to know that
  'movsp' is related to 'add' and that stack allocation is complete only after
  movsp?

2. alloca seems to make an additional 16-bytes padding to each stack
  allocation: alloca(1) results in moving sp down by 32 bytes, alloca(17)
  moves it by 48 bytes, etc. This padding looks unnecessary to me: either
  this space is not used (previous register frame is not spilled), or alloca
  exception handler will take care about reloading or moving spilled registers
  to a new location. In both cases after movsp this space is just wasted.
  Do you know why this padding may be needed?

-- 
Thanks.
-- Max

Reply via email to