comparison dmd/attrib.c @ 73:b706170e24a9 trunk

[svn r77] Fixed foreach on slice. Fixed some nested function problems when accessing outer function parameters. Major changes to handling of structs. Initial support for unions. Probably more...
author lindquist
date Wed, 31 Oct 2007 03:11:32 +0100
parents 0ccfae271c45
children eb379601d445
comparison
equal deleted inserted replaced
72:d7e764e62462 73:b706170e24a9
885 } 885 }
886 else if (strcmp(str,"va_intrinsic")==0) { 886 else if (strcmp(str,"va_intrinsic")==0) {
887 llvm_internal = LLVMva_intrinsic; 887 llvm_internal = LLVMva_intrinsic;
888 assert(args->dim == 2); 888 assert(args->dim == 2);
889 } 889 }
890 else if (strcmp(str,"notypeinfo")==0) {
891 llvm_internal = LLVMnotypeinfo;
892 assert(args->dim == 1);
893 }
890 else { 894 else {
891 error("unknown pragma command: %s", str); 895 error("unknown pragma command: %s", str);
892 } 896 }
893 } 897 }
894 else 898 else
895 error("1st argument must be a string"); 899 error("1st argument must be a string");
896 900
897 if (llvm_internal) 901 if (llvm_internal)
898 switch (llvm_internal) 902 switch (llvm_internal)
899 { 903 {
900 case LLVMintrinsic: 904 case LLVMintrinsic:
901 case LLVMmangle: 905 case LLVMmangle:
908 llvm_str1 = (char*)s->string; 912 llvm_str1 = (char*)s->string;
909 } 913 }
910 else 914 else
911 error("2nd argument must be a string"); 915 error("2nd argument must be a string");
912 break; 916 break;
913 917
914 case LLVMnull: 918 case LLVMnull:
915 case LLVMva_arg: 919 case LLVMva_arg:
916 case LLVMva_start: 920 case LLVMva_start:
921 case LLVMnotypeinfo:
917 break; 922 break;
918 923
919 default: 924 default:
920 assert(0); 925 assert(0);
921 } 926 }
922 } 927 }
923 } 928 }
986 error("can only be used on templates"); 991 error("can only be used on templates");
987 assert(0); 992 assert(0);
988 } 993 }
989 break; 994 break;
990 995
996 case LLVMnotypeinfo:
997 s->llvmInternal = llvm_internal;
998 break;
999
991 default: 1000 default:
992 assert(0 && "invalid LLVM_internal pragma got through :/"); 1001 assert(0 && "invalid LLVM_internal pragma got through :/");
993 } 1002 }
994 } 1003 }
995 1004