https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118277
ak at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu.org --- Comment #4 from ak at gcc dot gnu.org --- Most likely it's latent, asm constexpr just reuses the existing constexpr machinery. 5271 static tree 5272 initialized_type (tree t) 5273 { 5274 if (TYPE_P (t)) 5275 return t; 5276 tree type = TREE_TYPE (t); 5277 if (TREE_CODE (t) == CALL_EXPR) 5278 { (rr) 5279 /* A constructor call has void type, so we need to look deeper. */ 5280 tree fn = get_function_named_in_call (t); 5281 if (fn && TREE_CODE (fn) == FUNCTION_DECL 5282 && DECL_CXX_CONSTRUCTOR_P (fn)) 5283 type = DECL_CONTEXT (fn); 5284 } 5285 else if (TREE_CODE (t) == COMPOUND_EXPR) 5286 return initialized_type (TREE_OPERAND (t, 1)); 5287 else if (TREE_CODE (t) == AGGR_INIT_EXPR) 5288 type = TREE_TYPE (AGGR_INIT_EXPR_SLOT (t)); (rr) 5289 return cv_unqualified (type); 5290 } but t is an unexpected scope_ref with no type which is not handled: (rr) pt t <scope_ref 0x7f672b7bd5f0 tree_0 arg:0 <record_type 0x7f672b7bb540 to_str cxx-odr-p type_0 type_5 type_6 VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7f672b7bb1f8 context <translation_unit_decl 0x7f672b626000 ../../tsrc/conste.cc> template-info <template_info 0x7f672b7bd528 template <template_decl 0x7f672b610cc0 to_str> args <tree_vec 0x7f672b7d2280 length:1 elt:0 <template_parm_index 0x7f672b630090 type <integer_type 0x7f672b6285e8 int> readonly constant decl <const_decl 0x7f672b60f7f8 rname> index 0 level 1 orig_level 1>>> full-name "struct to_str<rname>" no-binfo use_template=1 interface-unknown chain <type_decl 0x7f672b636f00 to_str>> arg:1 <identifier_node 0x7f672b622fc0 value normal local bindings <(nil)>> ../../tsrc/conste.cc:5:23 start: ../../tsrc/conste.cc:5:23 finish: ../../tsrc/conste.cc:5:27>