[Bug inline-asm/23399] ICE in create_tmp_var, at gimplify.c:387

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Aug 15 14:53:00 GMT 2005


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-08-15 14:50 -------
Confirmed, reduced testcase:
template<typename T> bool cas(const T& test_val) 
{
  bool ret;
  __asm__ ("": :"r"(test_val));
}
struct atomic_ptr         {
  atomic_ptr(){}
  atomic_ptr(const volatile atomic_ptr& a) {  }
};
void pop()
{
  atomic_ptr ne;
  cas(ne);
}

This is invalid code as you are passing a struct to an inline-asm as a register (the code used to use "a" 
constriant but I changed it to a "r" constaint to make it general across targets).

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|other                       |inline-asm
     Ever Confirmed|                            |1
           Keywords|                            |ice-on-invalid-code
      Known to fail|                            |2.95 3.0.4 3.2.2 4.0.0 3.4.0
                   |                            |3.3.3
   Last reconfirmed|0000-00-00 00:00:00         |2005-08-15 14:51:00
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23399



More information about the Gcc-bugs mailing list